Re: WARNING: bad usercopy in corrupted (2)

From: Matthew Wilcox
Date: Sun Nov 25 2018 - 16:27:19 EST


On Sun, Nov 25, 2018 at 07:30:04AM -0800, syzbot wrote:
> Hello,
>
> syzbot found the following crash on:
>
> HEAD commit: aea0a897af9e ptp: Fix pass zero to ERR_PTR() in ptp_clock_..
> git tree: net-next

If you found it on net-next, I'd suggets cc'ing linux-net ...

> console output: https://syzkaller.appspot.com/x/log.txt?x=101b91d5400000
> kernel config: https://syzkaller.appspot.com/x/.config?x=c36a72af2123e78a
> dashboard link: https://syzkaller.appspot.com/bug?extid=d89b30c46434c433dbf8
> compiler: gcc (GCC) 8.0.1 20180413 (experimental)
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=170f6a47400000
> C reproducer: https://syzkaller.appspot.com/x/repro.c?x=12e1df7b400000
>
> IMPORTANT: if you fix the bug, please add the following tag to the commit:
> Reported-by: syzbot+d89b30c46434c433dbf8@xxxxxxxxxxxxxxxxxxxxxxxxx
>
> ------------[ cut here ]------------
> DEBUG_LOCKS_WARN_ON(!hlock->nest_lock)
> ------------[ cut here ]------------
> Bad or missing usercopy whitelist? Kernel memory overwrite attempt detected
> to SLAB object 'task_struct' (offset 1432, size 2)!
> WARNING: CPU: 1 PID: 38 at mm/usercopy.c:83 usercopy_warn+0xee/0x110
> mm/usercopy.c:78
> Kernel panic - not syncing: panic_on_warn set ...
> list_add corruption. next->prev should be prev (ffff8881daf2d798), but was
> 0b7e0c8e49cc0400. (next=ffff8881d9b4a4f0).
> CPU: 1 PID: 38 Comm: ïïïÙïïïd ïïïïïï Not tainted 4.20.0-rc3+ #312
> ------------[ cut here ]------------
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
> Google 01/01/2011
> kernel BUG at lib/list_debug.c:25!
> ------------[ cut here ]------------
> invalid opcode: 0000 [#1] PREEMPT SMP KASAN
> kernel BUG at mm/slab.c:4425!
> CPU: 0 PID: 8652 Comm: syz-executor607 Not tainted 4.20.0-rc3+ #312
> WARNING: CPU: 1 PID: 38 at kernel/rcu/tree_plugin.h:438
> __rcu_read_unlock+0x266/0x2e0 kernel/rcu/tree_plugin.h:432
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
> Google 01/01/2011
> Modules linked in:
> RIP: 0010:__list_add_valid.cold.2+0xf/0x2a lib/list_debug.c:23
> CPU: 1 PID: 38 Comm: ïïïÙïïïd ïïïïïï Not tainted 4.20.0-rc3+ #312
> Code: d1 60 88 e8 a1 37 d2 fd 0f 0b 48 89 de 48 c7 c7 60 d1 60 88 e8 90 37
> d2 fd 0f 0b 48 89 d9 48 c7 c7 20 d2 60 88 e8 7f 37 d2 fd <0f> 0b 48 89 f1 48
> c7 c7 a0 d2 60 88 48 89 de e8 6b 37 d2 fd 0f 0b
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
> Google 01/01/2011
> RSP: 0000:ffff8881dae07588 EFLAGS: 00010082
> usercopy: Kernel memory overwrite attempt detected to SLAB object
> 'signal_cache' (offset 1328, size 23)!
> RAX: 0000000000000075 RBX: ffff8881d9b4a4f0 RCX: 0000000000000000
> ------------[ cut here ]------------
> RDX: 0000000000000000 RSI: ffffffff8165eaf5 RDI: 0000000000000005
> kernel BUG at mm/usercopy.c:102!
> RBP: ffff8881dae075a0 R08: ffff8881d25ce100 R09: ffffed103b5c5020
> R10: ffffed103b5c5020 R11: ffff8881dae28107 R12: ffff8881bd890230
> R13: dffffc0000000000 R14: ffff8881dae07980 R15: ffff8881daf2d798
> FS: 000000000083c880(0000) GS:ffff8881dae00000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 00007fff14476600 CR3: 00000001d2a59000 CR4: 00000000001406f0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> Call Trace:
> <IRQ>
> __list_add include/linux/list.h:60 [inline]
> list_add include/linux/list.h:79 [inline]
> list_move include/linux/list.h:171 [inline]
> detach_tasks kernel/sched/fair.c:7298 [inline]
> load_balance+0x1b8d/0x39a0 kernel/sched/fair.c:8731
> rebalance_domains+0x845/0xdc0 kernel/sched/fair.c:9109
> run_rebalance_domains+0x38d/0x500 kernel/sched/fair.c:9731
> __do_softirq+0x308/0xb7e kernel/softirq.c:292
> invoke_softirq kernel/softirq.c:373 [inline]
> irq_exit+0x17f/0x1c0 kernel/softirq.c:413
> exiting_irq arch/x86/include/asm/apic.h:536 [inline]
> smp_apic_timer_interrupt+0x1cb/0x760 arch/x86/kernel/apic/apic.c:1061
> apic_timer_interrupt+0xf/0x20 arch/x86/entry/entry_64.S:804
> </IRQ>
> RIP: 0033:0x4005dd
> Code: c9 00 04 00 66 0f 1f 84 00 00 00 00 00 48 8b 05 f1 2e 2d 00 48 85 c0
> 74 11 bf 3c e8 4b 00 b9 0e 00 00 00 48 89 c6 f3 a6 75 01 <c3> 48 89 c7 e9 9a
> ec 01 00 66 2e 0f 1f 84 00 00 00 00 00 8b 05 4a
> RSP: 002b:00007fff144765a8 EFLAGS: 00000246 ORIG_RAX: ffffffffffffff13
> RAX: 0000000000000000 RBX: 0000000000000002 RCX: 00000000006d2190
> RDX: 0000000000402410 RSI: 0000000000000000 RDI: 0000000000000000
> RBP: 00000000006cc0a8 R08: 0000000000000000 R09: 0000000000000000
> R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001
> R13: 00000000006d2180 R14: 0000000000000000 R15: 0000000000000000
> Modules linked in:
> ---[ end trace eeb5734c13709e17 ]---
> invalid opcode: 0000 [#2] PREEMPT SMP KASAN
> CPU: 1 PID: 38 Comm: ïïïÙïïïd ïïïïïï Tainted: G D 4.20.0-rc3+
> #312
> RIP: 0010:__list_add_valid.cold.2+0xf/0x2a lib/list_debug.c:23
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS
> Google 01/01/2011
> Code: d1 60 88 e8 a1 37 d2 fd 0f 0b 48 89 de 48 c7 c7 60 d1 60 88 e8 90 37
> d2 fd 0f 0b 48 89 d9 48 c7 c7 20 d2 60 88 e8 7f 37 d2 fd <0f> 0b 48 89 f1 48
> c7 c7 a0 d2 60 88 48 89 de e8 6b 37 d2 fd 0f 0b
> RIP: 0010:usercopy_abort+0xbb/0xbd mm/usercopy.c:90
> RSP: 0000:ffff8881dae07588 EFLAGS: 00010082
> Code: c0 e8 f7 dc b1 ff 48 8b 55 c0 49 89 d9 4d 89 f0 ff 75 c8 4c 89 e1 4c
> 89 ee 48 c7 c7 80 d5 34 88 ff 75 d0 41 57 e8 e7 28 98 ff <0f> 0b e8 cc dc b1
> ff e8 97 13 f5 ff 8b 95 e4 fe ff ff 4c 89 e1 31
> RAX: 0000000000000075 RBX: ffff8881d9b4a4f0 RCX: 0000000000000000
> RSP: 0018:ffff8881d9b49438 EFLAGS: 00010086
> RDX: 0000000000000000 RSI: ffffffff8165eaf5 RDI: 0000000000000005
> RAX: 0000000000000068 RBX: ffffffff88291020 RCX: 0000000000000000
> RBP: ffff8881dae075a0 R08: ffff8881d25ce100 R09: ffffed103b5c5020
> RDX: 0000000000000000 RSI: ffffffff8165eaf5 RDI: 0000000000000005
> R10: ffffed103b5c5020 R11: ffff8881dae28107 R12: ffff8881bd890230
> RBP: ffff8881d9b49490 R08: ffff8881d9b4a440 R09: ffffed103b5e3ef8
> R13: dffffc0000000000 R14: ffff8881dae07980 R15: ffff8881daf2d798
> R10: ffffed103b5e3ef8 R11: ffff8881daf1f7c7 R12: ffffffff8914da1d
> FS: 000000000083c880(0000) GS:ffff8881dae00000(0000) knlGS:0000000000000000
> R13: ffffffff8834d3e0 R14: ffffffff8834d320 R15: ffffffff8834d2e0
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> FS: 0000000000000000(0000) GS:ffff8881daf00000(0000) knlGS:0000000000000000
> CR2: 00007fff14476600 CR3: 00000001d2a59000 CR4: 00000000001406f0
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> CR2: 0000000000000130 CR3: 00000001d7880000 CR4: 00000000001406e0
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> Call Trace:
> Modules linked in:
> ---[ end trace eeb5734c13709e18 ]---
> RIP: 0010:__list_add_valid.cold.2+0xf/0x2a lib/list_debug.c:23
> Code: d1 60 88 e8 a1 37 d2 fd 0f 0b 48 89 de 48 c7 c7 60 d1 60 88 e8 90 37
> d2 fd 0f 0b 48 89 d9 48 c7 c7 20 d2 60 88 e8 7f 37 d2 fd <0f> 0b 48 89 f1 48
> c7 c7 a0 d2 60 88 48 89 de e8 6b 37 d2 fd 0f 0b
> RSP: 0000:ffff8881dae07588 EFLAGS: 00010082
> RAX: 0000000000000075 RBX: ffff8881d9b4a4f0 RCX: 0000000000000000
> RDX: 0000000000000000 RSI: ffffffff8165eaf5 RDI: 0000000000000005
> RBP: ffff8881dae075a0 R08: ffff8881d25ce100 R09: ffffed103b5c5020
> R10: ffffed103b5c5020 R11: ffff8881dae28107 R12: ffff8881bd890230
> R13: dffffc0000000000 R14: ffff8881dae07980 R15: ffff8881daf2d798
> FS: 0000000000000000(0000) GS:ffff8881daf00000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000130 CR3: 00000001d7880000 CR4: 00000000001406e0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
>
>
> ---
> This bug is generated by a bot. It may contain errors.
> See https://goo.gl/tpsmEJ for more information about syzbot.
> syzbot engineers can be reached at syzkaller@xxxxxxxxxxxxxxxxx
>
> syzbot will keep track of this bug report. See:
> https://goo.gl/tpsmEJ#bug-status-tracking for how to communicate with
> syzbot.
> syzbot can test patches for this bug, for details see:
> https://goo.gl/tpsmEJ#testing-patches