Re: BUG: unable to handle kernel NULL pointer dereference in binder_deferred_func

From: Eric Biggers
Date: Tue Jan 30 2018 - 17:05:50 EST


On Tue, Dec 19, 2017 at 08:25:00AM -0800, syzbot wrote:
> Hello,
>
> syzkaller hit the following crash on
> 6084b576dca2e898f5c101baef151f7bfdbb606d
> git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/master
> compiler: gcc (GCC) 7.1.1 20170620
> .config is attached
> Raw console output is attached.
>
> Unfortunately, I don't have any reproducer for this bug yet.
>
>
> binder: 5029:5034 got transaction to invalid handle
> binder: 5029:5034 transaction failed 29201/-22, size 0-56 line 2832
> binder: undelivered TRANSACTION_ERROR: 29201
> BUG: unable to handle kernel NULL pointer dereference at (null)
> IP: __hlist_del include/linux/list.h:650 [inline]
> IP: hlist_del include/linux/list.h:656 [inline]
> IP: binder_deferred_release drivers/android/binder.c:4869 [inline]
> IP: binder_deferred_func+0x172/0x760 drivers/android/binder.c:4978
> PGD 1d6fa0067 P4D 1d6fa0067 PUD 1dd31d067 PMD 0
> Oops: 0002 [#1] SMP
> Dumping ftrace buffer:
> (ftrace buffer empty)
> Modules linked in:
> CPU: 0 PID: 3384 Comm: kworker/0:3 Not tainted 4.15.0-rc3-next-20171214+ #67
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
> Google 01/01/2011
> Workqueue: events binder_deferred_func
> RIP: 0010:__hlist_del include/linux/list.h:650 [inline]
> RIP: 0010:hlist_del include/linux/list.h:656 [inline]
> RIP: 0010:binder_deferred_release drivers/android/binder.c:4869 [inline]
> RIP: 0010:binder_deferred_func+0x172/0x760 drivers/android/binder.c:4978
> RSP: 0018:ffffc90002c83de8 EFLAGS: 00010246
> RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffffffff82e4c35e
> RDX: ffff8802156dc5c0 RSI: 000000003f65f67c RDI: 0000000000000000
> RBP: ffffc90002c83e48 R08: ffffffff82021bf5 R09: 0000000000000004
> R10: ffffc90002c83dd8 R11: 0000000000000004 R12: ffff8801de9ce458
> R13: ffff880215760160 R14: 0000000000000000 R15: ffff8801de9ce400
> FS: 0000000000000000(0000) GS:ffff88021fc00000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000000 CR3: 00000001d6fa1000 CR4: 00000000001406f0
> Call Trace:
> process_one_work+0x288/0x7a0 kernel/workqueue.c:2112
> worker_thread+0x43/0x4d0 kernel/workqueue.c:2246
> kthread+0x149/0x170 kernel/kthread.c:238
> ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:524
> Code: 24 58 02 00 00 0f 85 8b 05 00 00 e8 59 87 29 ff 31 f6 48 c7 c7 80 bd
> 15 83 e8 4b a1 5a 00 49 8b 5c 24 a8 4d 8b 74 24 b0 48 85 db <49> 89 1e 74 09
> e8 34 87 29 ff 4c 89 73 08 e8 2b 87 29 ff 48 b8
> RIP: __hlist_del include/linux/list.h:650 [inline] RSP: ffffc90002c83de8
> RIP: hlist_del include/linux/list.h:656 [inline] RSP: ffffc90002c83de8
> RIP: binder_deferred_release drivers/android/binder.c:4869 [inline] RSP:
> ffffc90002c83de8
> RIP: binder_deferred_func+0x172/0x760 drivers/android/binder.c:4978 RSP:
> ffffc90002c83de8
> CR2: 0000000000000000
> ---[ end trace 043d80c4b2730aca ]---
> Kernel panic - not syncing: Fatal exception
> Dumping ftrace buffer:
> (ftrace buffer empty)
> Kernel Offset: disabled
> Rebooting in 86400 seconds..

Invalidating this bug since it hasn't been seen again, and it was reported while
KASAN was accidentally disabled in the syzbot kconfig due to a change to the
kconfig menus in linux-next (so this crash was possibly caused by slab
corruption elsewhere).

#syz invalid