Skip to content

Commit e77aff5

Browse files
Carlos Llamasgregkh
authored andcommitted
binderfs: fix use-after-free in binder_devices
Devices created through binderfs are added to the global binder_devices list but are not removed before being destroyed. This leads to dangling pointers in the list and subsequent use-after-free errors: ================================================================== BUG: KASAN: slab-use-after-free in binder_add_device+0x5c/0x9c Write of size 8 at addr ffff0000c258d708 by task mount/653 CPU: 7 UID: 0 PID: 653 Comm: mount Not tainted 6.13.0-09030-g6d61a53dd6f5 #1 Hardware name: linux,dummy-virt (DT) Call trace: binder_add_device+0x5c/0x9c binderfs_binder_device_create+0x690/0x84c [...] __arm64_sys_mount+0x324/0x3bc Allocated by task 632: binderfs_binder_device_create+0x168/0x84c binder_ctl_ioctl+0xfc/0x184 [...] __arm64_sys_ioctl+0x110/0x150 Freed by task 649: kfree+0xe0/0x338 binderfs_evict_inode+0x138/0x1dc [...] ================================================================== Remove devices from binder_devices before destroying them. Cc: Li Li <[email protected]> Reported-by: [email protected] Closes: https://syzkaller.appspot.com/bug?extid=7015dcf45953112c8b45 Fixes: 12d909c ("binderfs: add new binder devices to binder_devices") Signed-off-by: Carlos Llamas <[email protected]> Tested-by: [email protected] Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent dcb0d43 commit e77aff5

File tree

1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

drivers/android/binderfs.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,7 @@ static void binderfs_evict_inode(struct inode *inode)
274274
mutex_unlock(&binderfs_minors_mutex);
275275

276276
if (refcount_dec_and_test(&device->ref)) {
277+
hlist_del_init(&device->hlist);
277278
kfree(device->context.name);
278279
kfree(device);
279280
}

0 commit comments

Comments
 (0)