Re: general protection fault in tcf_generic_walker

From: Cong Wang
Date: Wed Sep 30 2020 - 14:10:42 EST


On Wed, Sep 30, 2020 at 10:42 AM syzbot
<syzbot+b47bc4f247856fb4d9e1@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> syzbot has found a reproducer for the following issue on:
>
> HEAD commit: 2b3e981a Merge branch 'mptcp-Fix-for-32-bit-DATA_FIN'
> git tree: net
> console output: https://syzkaller.appspot.com/x/log.txt?x=16537247900000
> kernel config: https://syzkaller.appspot.com/x/.config?x=99a7c78965c75e07
> dashboard link: https://syzkaller.appspot.com/bug?extid=b47bc4f247856fb4d9e1
> compiler: gcc (GCC) 10.1.0-syz 20200507
> syz repro: https://syzkaller.appspot.com/x/repro.syz?x=1412a5a7900000
>
> IMPORTANT: if you fix the issue, please add the following tag to the commit:
> Reported-by: syzbot+b47bc4f247856fb4d9e1@xxxxxxxxxxxxxxxxxxxxxxxxx
>
> general protection fault, probably for non-canonical address 0xdffffc0000000004: 0000 [#1] PREEMPT SMP KASAN
> KASAN: null-ptr-deref in range [0x0000000000000020-0x0000000000000027]
> CPU: 0 PID: 8855 Comm: syz-executor.1 Not tainted 5.9.0-rc6-syzkaller #0
> Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
> RIP: 0010:tcf_dump_walker net/sched/act_api.c:240 [inline]
> RIP: 0010:tcf_generic_walker+0x367/0xba0 net/sched/act_api.c:343
> Code: 24 31 ff 48 89 de e8 c8 55 eb fa 48 85 db 74 3f e8 3e 59 eb fa 48 8d 7d 30 48 b9 00 00 00 00 00 fc ff df 48 89 f8 48 c1 e8 03 <80> 3c 08 00 0f 85 26 07 00 00 48 8b 5d 30 31 ff 48 2b 1c 24 48 89
> RSP: 0018:ffffc9000b6ff3a8 EFLAGS: 00010202
> RAX: 0000000000000004 RBX: c0000000ffffaae4 RCX: dffffc0000000000
> RDX: ffff8880a82aa140 RSI: ffffffff868ae502 RDI: 0000000000000020
> RBP: fffffffffffffff0 R08: 0000000000000000 R09: ffff8880a8c41e07
> R10: 0000000000000000 R11: 0000000000000000 R12: ffff88809f226340
> R13: 0000000000000000 R14: 00000000ffffffff R15: 0000000000000000
> FS: 00007f156f7fa700(0000) GS:ffff8880ae400000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 000055d25128b348 CR3: 00000000a7d3d000 CR4: 00000000001506f0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> Call Trace:
> tc_dump_action+0x6d5/0xe60 net/sched/act_api.c:1609


Probably just need another IS_ERR() check on the dump path.
I will take a second look.

Thanks.