Re: WARNING: suspicious RCU usage in pid_task

From: syzbot
Date: Mon Jun 25 2018 - 13:45:27 EST


syzbot has found a reproducer for the following crash on:

HEAD commit: 6f0d349d922b Merge git://git.kernel.org/pub/scm/linux/kern..
git tree: upstream
console output: https://syzkaller.appspot.com/x/log.txt?x=14c04304400000
kernel config: https://syzkaller.appspot.com/x/.config?x=a63be0c83e84d370
dashboard link: https://syzkaller.appspot.com/bug?extid=c2d4c3ae3fd90bbaf059
compiler: gcc (GCC) 8.0.1 20180413 (experimental)
syzkaller repro:https://syzkaller.appspot.com/x/repro.syz?x=14f0a814400000
C reproducer: https://syzkaller.appspot.com/x/repro.c?x=16ce574c400000

IMPORTANT: if you fix the bug, please add the following tag to the commit:
Reported-by: syzbot+c2d4c3ae3fd90bbaf059@xxxxxxxxxxxxxxxxxxxxxxxxx

bpfilter: read fail -512

=============================
WARNING: suspicious RCU usage
4.18.0-rc2+ #117 Not tainted
-----------------------------
kernel/pid.c:323 suspicious rcu_dereference_check() usage!

other info that might help us debug this:


rcu_scheduler_active = 2, debug_locks = 1
1 lock held by syz-executor106/7744:
#0: 00000000bee82115 (bpfilter_lock){+.+.}, at: __bpfilter_process_sockopt+0x1c5/0x39b net/bpfilter/bpfilter_kern.c:67

stack backtrace:
CPU: 1 PID: 7744 Comm: syz-executor106 Not tainted 4.18.0-rc2+ #117
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:77 [inline]
dump_stack+0x1c9/0x2b4 lib/dump_stack.c:113
lockdep_rcu_suspicious+0x14a/0x153 kernel/locking/lockdep.c:4562
pid_task+0x1ce/0x200 kernel/pid.c:322
shutdown_umh.constprop.0+0x33/0x7c net/bpfilter/bpfilter_kern.c:29
__stop_umh net/bpfilter/bpfilter_kern.c:41 [inline]
__bpfilter_process_sockopt.cold.1+0x9b/0xa0 net/bpfilter/bpfilter_kern.c:81
bpfilter_mbox_request+0x4d/0xb0 net/ipv4/bpfilter/sockopt.c:25
bpfilter_ip_set_sockopt+0x33/0x40 net/ipv4/bpfilter/sockopt.c:31
ip_setsockopt+0x124/0x140 net/ipv4/ip_sockglue.c:1250
dccp_setsockopt+0x96/0xf0 net/dccp/proto.c:565
sock_common_setsockopt+0x9a/0xe0 net/core/sock.c:3040
__sys_setsockopt+0x1c5/0x3b0 net/socket.c:1947
__do_sys_setsockopt net/socket.c:1958 [inline]
__se_sys_setsockopt net/socket.c:1955 [inline]
__x64_sys_setsockopt+0xbe/0x150 net/socket.c:1955
do_syscall_64+0x1b9/0x820 arch/x86/entry/common.c:290
entry_SYSCALL_64_after_hwframe+0x49/0xbe
RIP: 0033:0x44cdb9
Code: e8 6c bd 02 00 48 83 c4 18 c3 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 0f 83 cb d2 fb ff c3 66 2e 0f 1f 84 00 00 00 00
RSP: 002b:00007f63b04a8d18 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
RAX: ffffffffffffffda RBX: 00000000006dfce4 RCX: 000000000044cdb9
RDX: 0000000000000040 RSI: 0000000000000000 RDI: 0000000000000027
RBP: 00000000006dfce0 R08: 0000000000000000 R09: 65732f636f72702f
R10: 0000000020000000 R11: 0000000000000246 R12: 00007f63b04a8d20
R13: 0100000000000000 R14: 6273752f7665642f R15: 0000000000000034