• Li Zhijian's avatar
    nvdimm: Fix devs leaks in scan_labels() · 62c2aa6b
    Li Zhijian authored
    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: 1b40e09a ("libnvdimm: blk labels and namespace instantiation")
    Suggested-by: default avatarDan Williams <dan.j.williams@intel.com>
    Signed-off-by: default avatarLi Zhijian <lizhijian@fujitsu.com>
    Reviewed-by: default avatarDan Williams <dan.j.williams@intel.com>
    Reviewed-by: default avatarIra Weiny <ira.weiny@intel.com>
    Link: https://patch.msgid.link/20240819062045.1481298-1-lizhijian@fujitsu.comSigned-off-by: default avatarIra Weiny <ira.weiny@intel.com>
    62c2aa6b
namespace_devs.c 55.2 KB