CVE-2022-50751 in Linux信息

摘要

由 VulDB • 2026-05-30

在 Linux 内核中,已修复以下漏洞:

configfs:修复 configfs_create_dir() 中可能存在的内存泄漏

kmemleak 报告 configfs_create_dir() 中存在内存泄漏:

未引用对象 0xffff888009f6af00(大小 192): 命令 "modprobe",进程 ID 3777,jiffies 4295537735(年龄 233.784 秒) 回溯: kmem_cache_alloc (mm/slub.c:3250 mm/slub.c:3256 mm/slub.c:3263 mm/slub.c:3273) new_fragment (./include/linux/slab.h:600 fs/configfs/dir.c:163) configfs_register_subsystem (fs/configfs/dir.c:1857) basic_write (drivers/hwtracing/stm/p_basic.c:14) stm_p_basic do_one_initcall (init/main.c:1296) do_init_module (kernel/module/main.c:2455) ...

未引用对象 0xffff888003ba7180(大小 96): 命令 "modprobe",进程 ID 3777,jiffies 4295537735(年龄 233.784 秒) 回溯: kmem_cache_alloc (mm/slub.c:3250 mm/slub.c:3256 mm/slub.c:3263 mm/slub.c:3273) configfs_new_dirent (./include/linux/slab.h:723 fs/configfs/dir.c:194) configfs_make_dirent (fs/configfs/dir.c:248) configfs_create_dir (fs/configfs/dir.c:296) configfs_attach_group.isra.28 (fs/configfs/dir.c:816 fs/configfs/dir.c:852) configfs_register_subsystem (fs/configfs/dir.c:1881) basic_write (drivers/hwtracing/stm/p_basic.c:14) stm_p_basic do_one_initcall (init/main.c:1296) do_init_module (kernel/module/main.c:2455) ...

这是因为 configfs_make_dirent() 中的引用计数不正确。 在正常流程中,引用计数的变化如下:

configfs_register_subsystem() configfs_create_dir() configfs_make_dirent() configfs_new_dirent() # 设置 s_count = 1 dentry->d_fsdata = configfs_get(sd); # s_count = 2 ... configfs_unregister_subsystem() configfs_remove_dir() remove_dir() configfs_remove_dirent() # s_count = 1 dput() ... *dentry_unlink_inode()* configfs_d_iput() # s_count = 0,释放

然而,如果在 configfs_create() 中失败:

configfs_register_subsystem() configfs_create_dir() configfs_make_dirent() # s_count = 2 ... configfs_create() # 失败 ->out_remove: configfs_remove_dirent(dentry) configfs_put(sd) # s_count = 1 return PTR_ERR(inode);

在错误路径中没有 inode,因此丢失了 configfs_d_iput(),导致 sd 和 fragment 内存泄漏。

为修复此问题,当在 configfs_create() 中失败时,手动调用 configfs_put(sd) 以保持引用计数正确。

If you want to get best quality of vulnerability data, you may have to visit VulDB.

来源

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!