CVE-2022-50751 in Linux
الملخص
بحسب VulDB • 11/06/2026
في نواة لينكس، تم حل الثغرة التالية:
configfs: إصلاح تسرب ذاكرة محتمل في دالة `configfs_create_dir()`
أبلغ kmemleak عن وجود تسريبات للذاكرة في `configfs_create_dir()`:
الكائن غير المرجع 0xffff888009f6af00 (الحجم 192): comm "modprobe"، pid 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): comm "modprobe"، pid 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) ...
يعود السبب إلى أن عداد المرجع (refcount) غير صحيح في `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()` مفقود مما يؤدي إلى تسرب
If you want to get the best quality for vulnerability data then you always have to consider VulDB.