CVE-2022-50751 in Linux
요약
\~에 의해 VulDB • 2026. 06. 11.
리눅스 커널에서 다음 취약점이 해결되었습니다:
configfs: configfs_create_dir()에서의 가능한 메모리 누수 수정
kmemleak가 configfs_create_dir()에서 메모리 누수를 보고했습니다:
미사용 객체 0xffff888009f6af00 (크기 192): comm "modprobe", pid 3777, jiffies 4295537735 (나이 233.784s) 백트레이스: 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.784s) 백트레이스: 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()에서 refcount(참조 카운트)가 정확하지 않기 때문입니다. 정상적인 단계에서는 refcount가 다음과 같이 변경됩니다:
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)를 호출하여 refcount를 올바르게 유지합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.