anolis-cloud-kernel/drivers/nvdimm
Li Zhijian 33a0948a09 nvdimm: Fix devs leaks in scan_labels()
ANBZ: #12491

commit 62c2aa6b1f upstream.

scan_labels() leaks memory when label scanning fails and it falls back
to just creating a default "seed" namespace for userspace to configure.
Root can force the kernel to leak memory.

Allocate the minimum resources unconditionally and release them when
unneeded to avoid the memory leak.

A kmemleak reports:
unreferenced object 0xffff88800dda1980 (size 16):
  comm "kworker/u10:5", pid 69, jiffies 4294671781
  hex dump (first 16 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace (crc 0):
    [<00000000c5dea560>] __kmalloc+0x32c/0x470
    [<000000009ed43c83>] nd_region_register_namespaces+0x6fb/0x1120 [libnvdimm]
    [<000000000e07a65c>] nd_region_probe+0xfe/0x210 [libnvdimm]
    [<000000007b79ce5f>] nvdimm_bus_probe+0x7a/0x1e0 [libnvdimm]
    [<00000000a5f3da2e>] really_probe+0xc6/0x390
    [<00000000129e2a69>] __driver_probe_device+0x78/0x150
    [<000000002dfed28b>] driver_probe_device+0x1e/0x90
    [<00000000e7048de2>] __device_attach_driver+0x85/0x110
    [<0000000032dca295>] bus_for_each_drv+0x85/0xe0
    [<00000000391c5a7d>] __device_attach+0xbe/0x1e0
    [<0000000026dabec0>] bus_probe_device+0x94/0xb0
    [<00000000c590d936>] device_add+0x656/0x870
    [<000000003d69bfaa>] nd_async_device_register+0xe/0x50 [libnvdimm]
    [<000000003f4c52a4>] async_run_entry_fn+0x2e/0x110
    [<00000000e201f4b0>] process_one_work+0x1ee/0x600
    [<000000006d90d5a9>] worker_thread+0x183/0x350

Cc: Dave Jiang <dave.jiang@intel.com>
Cc: Ira Weiny <ira.weiny@intel.com>
Fixes: 1b40e09a12 ("libnvdimm: blk labels and namespace instantiation")
Suggested-by: Dan Williams <dan.j.williams@intel.com>
Signed-off-by: Li Zhijian <lizhijian@fujitsu.com>
Reviewed-by: Dan Williams <dan.j.williams@intel.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Link: https://patch.msgid.link/20240819062045.1481298-1-lizhijian@fujitsu.com
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
Fixes: CVE-2024-47755
Signed-off-by: Xunlei Pang <xlpang@linux.alibaba.com>
Reviewed-by: Guixin Liu <kanie@linux.alibaba.com>
Link: https://gitee.com/anolis/cloud-kernel/pulls/4935
2025-03-28 01:39:21 +00:00
..
Kconfig nvdimm: Support sizeof(struct page) > MAX_STRUCT_PAGE_SIZE 2023-08-24 14:35:51 +00:00
Makefile
badrange.c
blk.c block: switch polling to be bio based 2024-11-26 01:40:15 +00:00
btt.c block: switch polling to be bio based 2024-11-26 01:40:15 +00:00
btt.h
btt_devs.c
bus.c nvdimm: Fix badblocks clear off-by-one error 2022-07-07 17:52:15 +02:00
claim.c
core.c nvdimm: Fix firmware activation deadlock scenarios 2022-06-09 10:21:15 +02:00
dax_devs.c
dimm.c
dimm_devs.c
e820.c
label.c
label.h
namespace_devs.c nvdimm: Fix devs leaks in scan_labels() 2025-03-28 01:39:21 +00:00
nd-core.h
nd.h nvdimm: Support sizeof(struct page) > MAX_STRUCT_PAGE_SIZE 2023-08-24 14:35:51 +00:00
nd_virtio.c
of_pmem.c
pfn.h
pfn_devs.c nvdimm: Support sizeof(struct page) > MAX_STRUCT_PAGE_SIZE 2023-08-24 14:35:51 +00:00
pmem.c block: switch polling to be bio based 2024-11-26 01:40:15 +00:00
pmem.h
region.c
region_devs.c
security.c nvdimm: Allow overwrite in the presence of disabled dimms 2022-06-09 10:21:15 +02:00
virtio_pmem.c
virtio_pmem.h