tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 07c988f00903b4f0fbf9c31cea24351fbf885b1c
commit: d65622e6edee11f7fcbd295bdb5aef86e12dfef3 [21349/23271] mmc: add support for Phytium MMC
config: arm64-randconfig-001-20240712 (https://download.01.org/0day-ci/archive/20240713/202407130055.5P1q7PDM-lkp@…)
compiler: aarch64-linux-gcc (GCC) 14.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240713/202407130055.5P1q7PDM-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202407130055.5P1q7PDM-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/mmc/host/phytium-sdci.c: In function 'phytium_sdci_start_data':
drivers/mmc/host/phytium-sdci.c:271:14: warning: variable 'read' set but not used [-Wunused-but-set-variable]
271 | bool read, res;
| ^~~~
drivers/mmc/host/phytium-sdci.c: In function 'phytium_sdci_dma_irq':
drivers/mmc/host/phytium-sdci.c:1018:29: warning: variable 'cmd' set but not used [-Wunused-but-set-variable]
1018 | struct mmc_command *cmd;
| ^~~
drivers/mmc/host/phytium-sdci.c: At top level:
>> drivers/mmc/host/phytium-sdci.c:1483:23: error: lvalue required as unary '&' operand
1483 | .pm = &phytium_sdci_dev_pm_ops,
| ^
vim +1483 drivers/mmc/host/phytium-sdci.c
1475
1476 static struct platform_driver phytium_sdci_driver = {
1477 .probe = phytium_sdci_probe,
1478 .remove = phytium_sdci_remove,
1479 .driver = {
1480 .name = "sdci-phytium",
1481 .of_match_table = phytium_sdci_of_ids,
1482 .acpi_match_table = phytium_sdci_acpi_ids,
> 1483 .pm = &phytium_sdci_dev_pm_ops,
1484 },
1485 };
1486
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IA7L2U
---------------------------
If the chip not having RDT function, resctrl_arch_system_num_rmid_idx()
would return 0. rmid_ptrs points to an illegal buffer after kcalloc()
allocation, which would cause illegal access fault when accessing.
Consequently, when we found resctrl_arch_system_num_rmid_idx() return 0,
just return EOPNOTSUPP immediatly and skip initializing the resctrl file
system.
Fixes: 13e249bf4944 ("x86/resctrl: Move the filesystem portions of resctrl to live in '/fs/'")
Signed-off-by: Zeng Heng <zengheng4(a)huawei.com>
---
fs/resctrl/monitor.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/fs/resctrl/monitor.c b/fs/resctrl/monitor.c
index fcf2ab18966f..6f93ed1681c4 100644
--- a/fs/resctrl/monitor.c
+++ b/fs/resctrl/monitor.c
@@ -727,6 +727,9 @@ static int dom_data_init(struct rdt_resource *r)
int err = 0, i;
u32 idx;
+ if (!idx_limit)
+ return -EOPNOTSUPP;
+
mutex_lock(&rdtgroup_mutex);
if (IS_ENABLED(CONFIG_RESCTRL_RMID_DEPENDS_ON_CLOSID)) {
u32 *tmp;
--
2.25.1
From: Baolin Wang <baolin.wang(a)linux.alibaba.com>
mainline inclusion
from mainline-v6.9-rc1
commit 8b3d838139bcd1e552f1899191f734264ce2a1a5
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/IACHGW
CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
-------------------------------------------
We met a kernel crash issue when running stress-ng testing, and the
system crashes when printing the dentry name in dump_mapping().
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
pc : dentry_name+0xd8/0x224
lr : pointer+0x22c/0x370
sp : ffff800025f134c0
......
Call trace:
dentry_name+0xd8/0x224
pointer+0x22c/0x370
vsnprintf+0x1ec/0x730
vscnprintf+0x2c/0x60
vprintk_store+0x70/0x234
vprintk_emit+0xe0/0x24c
vprintk_default+0x3c/0x44
vprintk_func+0x84/0x2d0
printk+0x64/0x88
__dump_page+0x52c/0x530
dump_page+0x14/0x20
set_migratetype_isolate+0x110/0x224
start_isolate_page_range+0xc4/0x20c
offline_pages+0x124/0x474
memory_block_offline+0x44/0xf4
memory_subsys_offline+0x3c/0x70
device_offline+0xf0/0x120
......
The root cause is that, one thread is doing page migration, and we will
use the target page's ->mapping field to save 'anon_vma' pointer between
page unmap and page move, and now the target page is locked and refcount
is 1.
Currently, there is another stress-ng thread performing memory hotplug,
attempting to offline the target page that is being migrated. It discovers
that the refcount of this target page is 1, preventing the offline operation,
thus proceeding to dump the page. However, page_mapping() of the target
page may return an incorrect file mapping to crash the system in dump_mapping(),
since the target page->mapping only saves 'anon_vma' pointer without setting
PAGE_MAPPING_ANON flag.
The page migration issue has been fixed by commit d1adb25df711 ("mm: migrate:
fix getting incorrect page mapping during page migration"). In addition,
Matthew suggested we should also improve dump_mapping()'s robustness to
resilient against the kernel crash [1].
With checking the 'dentry.parent' and 'dentry.d_name.name' used by
dentry_name(), I can see dump_mapping() will output the invalid dentry
instead of crashing the system when this issue is reproduced again.
[12211.189128] page:fffff7de047741c0 refcount:1 mapcount:0 mapping:ffff989117f55ea0 index:0x1 pfn:0x211dd07
[12211.189144] aops:0x0 ino:1 invalid dentry:74786574206e6870
[12211.189148] flags: 0x57ffffc0000001(locked|node=1|zone=2|lastcpupid=0x1fffff)
[12211.189150] page_type: 0xffffffff()
[12211.189153] raw: 0057ffffc0000001 0000000000000000 dead000000000122 ffff989117f55ea0
[12211.189154] raw: 0000000000000001 0000000000000001 00000001ffffffff 0000000000000000
[12211.189155] page dumped because: unmovable page
[1] https://lore.kernel.org/all/ZXxn%2F0oixJxxAnpF@casper.infradead.org/
Suggested-by: Matthew Wilcox <willy(a)infradead.org>
Signed-off-by: Baolin Wang <baolin.wang(a)linux.alibaba.com>
Link: https://lore.kernel.org/r/937ab1f87328516821d39be672b6bc18861d9d3e.17053914…
Signed-off-by: Christian Brauner <brauner(a)kernel.org>
Conflicts:
fs/inode.c
mm/debug.c
[Prior cleanup commit 3e9d80a891df is not merged.]
Signed-off-by: Jinjiang Tu <tujinjiang(a)huawei.com>
---
mm/debug.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mm/debug.c b/mm/debug.c
index 8a40b3fefbeb..6ead410ec389 100644
--- a/mm/debug.c
+++ b/mm/debug.c
@@ -150,7 +150,8 @@ void __dump_page(struct page *page, const char *reason)
}
dentry_ptr = container_of(dentry_first, struct dentry, d_u.d_alias);
- if (get_kernel_nofault(dentry, dentry_ptr)) {
+ if (get_kernel_nofault(dentry, dentry_ptr) ||
+ !dentry.d_parent || !dentry.d_name.name) {
pr_warn("aops:%ps ino:%lx with invalid dentry %px\n",
a_ops, ino, dentry_ptr);
} else {
--
2.25.1