Description
In the Linux kernel, the following vulnerability has been resolved: configfs: unhash the dentry before dropping the item in rmdir configfs_get_config_item() treats a hashed dentry as proof that sd->s_element is a live config_item. configfs_rmdir() breaks that: simple_rmdir() leaves the dentry hashed, the last reference to the item is dropped right after, and the dentry is only unhashed by d_delete() once ->rmdir() has returned. configfs_symlink() resolves its target holding no lock on it, so get_target() can land in that window: BUG: KASAN: slab-use-after-free in config_item_get+0x26/0x90 get_target fs/configfs/symlink.c:128 [inline] configfs_symlink+0x4ab/0x1030 fs/configfs/symlink.c:185 Unhash in configfs_remove_dir(), while the item is still guaranteed to be there. A reference obtained just before that stays harmless, as create_link() rechecks CONFIGFS_USET_DROPPING, already set by configfs_detach_prep(). Both configfs_unregister_subsystem() paths d_drop() after detaching, so this only makes rmdir match them.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
7063fbf2261194f72ee75afca67b3b38b554b5fa to < b315d865660766d45ecdbf7433a4e3d36a554b3baffected7063fbf2261194f72ee75afca67b3b38b554b5fa to < 446720051d44eebaa81b33969173160057b73a33affected7063fbf2261194f72ee75afca67b3b38b554b5fa to < 5d7cbfb65e47cc71d5d94d87d5d0d1679080f3ebaffected7063fbf2261194f72ee75afca67b3b38b554b5fa to < 925d8564f1b2d9b46c5ab63b9bc942cea006da9baffected7063fbf2261194f72ee75afca67b3b38b554b5fa to < f06c2d26d1999d37e93299db0ecead04ca7d0b9faffected
Linux Linux
Default version status: affected
2.6.16affected0 to < 2.6.16unaffected6.6.160 to ≤ 6.6.*unaffected6.12.112 to ≤ 6.12.*unaffected6.18.53 to ≤ 6.18.*unaffected7.2.7 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/b315d865660766d45ecdbf7433a4e3d36a554b3b ↗
- https://git.kernel.org/stable/c/446720051d44eebaa81b33969173160057b73a33 ↗
- https://git.kernel.org/stable/c/5d7cbfb65e47cc71d5d94d87d5d0d1679080f3eb ↗
- https://git.kernel.org/stable/c/925d8564f1b2d9b46c5ab63b9bc942cea006da9b ↗
- https://git.kernel.org/stable/c/f06c2d26d1999d37e93299db0ecead04ca7d0b9f ↗