syzbot
WARNING: suspicious RCU usage in tcp_md5_do_lookup
Status:
upstream: reported C repro on 2020/03/10 09:14
Reported-by: syzbot+abbacfadf9858477b162@syzkaller.appspotmail.com
First crash: 2358d, last: 1923d
▶
▼
Last patch testing requests (4)
▶
▼
Fix bisection attempts (2)
Sample crash report:
bond0 (unregistering): Releasing backup interface bond_slave_0
bond0 (unregistering): Released all slaves
device lo entered promiscuous mode
device lo entered promiscuous mode
=============================
WARNING: suspicious RCU usage
4.14.198-syzkaller #0 Not tainted
-----------------------------
net/ipv4/tcp_ipv4.c:918 suspicious rcu_dereference_check() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 1
4 locks held by kworker/u4:0/5:
#0: ("%s""netns"){+.+.}, at: [<ffffffff813ba640>] process_one_work+0x6b0/0x14a0 kernel/workqueue.c:2087
#1: (net_cleanup_work){+.+.}, at: [<ffffffff813ba676>] process_one_work+0x6e6/0x14a0 kernel/workqueue.c:2091
#2: (net_mutex){+.+.}, at: [<ffffffff8511c9f0>] cleanup_net+0x110/0x840 net/core/net_namespace.c:450
#3: (rtnl_mutex){+.+.}, at: [<ffffffff85151f8e>] netdev_run_todo+0x20e/0xad0 net/core/dev.c:7926
stack backtrace:
CPU: 0 PID: 5 Comm: kworker/u4:0 Not tainted 4.14.198-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Workqueue: netns cleanup_net
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b2/0x283 lib/dump_stack.c:58
tcp_md5_do_lookup+0x3b4/0x510 net/ipv4/tcp_ipv4.c:918
tcp_established_options+0x94/0x410 net/ipv4/tcp_output.c:690
__tcp_transmit_skb+0x286/0x2cb0 net/ipv4/tcp_output.c:1032
tcp_transmit_skb net/ipv4/tcp_output.c:1149 [inline]
tcp_send_active_reset+0x40b/0x5c0 net/ipv4/tcp_output.c:3156
tcp_disconnect+0x15a/0x1860 net/ipv4/tcp.c:2341
rds_tcp_conn_paths_destroy net/rds/tcp.c:515 [inline]
rds_tcp_kill_sock net/rds/tcp.c:544 [inline]
rds_tcp_dev_event+0x73f/0xa30 net/rds/tcp.c:573
notifier_call_chain+0x108/0x1a0 kernel/notifier.c:93
call_netdevice_notifiers_info net/core/dev.c:1667 [inline]
call_netdevice_notifiers net/core/dev.c:1683 [inline]
netdev_run_todo+0x242/0xad0 net/core/dev.c:7927
default_device_exit_batch+0x2e2/0x380 net/core/dev.c:8747
ops_exit_list+0xf9/0x150 net/core/net_namespace.c:145
cleanup_net+0x3b3/0x840 net/core/net_namespace.c:484
process_one_work+0x793/0x14a0 kernel/workqueue.c:2116
worker_thread+0x5cc/0xff0 kernel/workqueue.c:2250
kthread+0x30d/0x420 kernel/kthread.c:232
ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:404
=============================
WARNING: suspicious RCU usage
4.14.198-syzkaller #0 Not tainted
-----------------------------
include/net/sock.h:1800 suspicious rcu_dereference_protected() usage!
other info that might help us debug this:
rcu_scheduler_active = 2, debug_locks = 1
4 locks held by kworker/u4:0/5:
#0: ("%s""netns"){+.+.}, at: [<ffffffff813ba640>] process_one_work+0x6b0/0x14a0 kernel/workqueue.c:2087
#1: (net_cleanup_work){+.+.}, at: [<ffffffff813ba676>] process_one_work+0x6e6/0x14a0 kernel/workqueue.c:2091
#2: (net_mutex){+.+.}, at: [<ffffffff8511c9f0>] cleanup_net+0x110/0x840 net/core/net_namespace.c:450
#3: (rtnl_mutex){+.+.}, at: [<ffffffff85151f8e>] netdev_run_todo+0x20e/0xad0 net/core/dev.c:7926
stack backtrace:
CPU: 0 PID: 5 Comm: kworker/u4:0 Not tainted 4.14.198-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Workqueue: netns cleanup_net
Call Trace:
__dump_stack lib/dump_stack.c:17 [inline]
dump_stack+0x1b2/0x283 lib/dump_stack.c:58
__sk_dst_set include/net/sock.h:1800 [inline]
__sk_dst_reset include/net/sock.h:1820 [inline]
tcp_disconnect+0x13e5/0x1860 net/ipv4/tcp.c:2383
rds_tcp_conn_paths_destroy net/rds/tcp.c:515 [inline]
rds_tcp_kill_sock net/rds/tcp.c:544 [inline]
rds_tcp_dev_event+0x73f/0xa30 net/rds/tcp.c:573
notifier_call_chain+0x108/0x1a0 kernel/notifier.c:93
call_netdevice_notifiers_info net/core/dev.c:1667 [inline]
call_netdevice_notifiers net/core/dev.c:1683 [inline]
netdev_run_todo+0x242/0xad0 net/core/dev.c:7927
default_device_exit_batch+0x2e2/0x380 net/core/dev.c:8747
ops_exit_list+0xf9/0x150 net/core/net_namespace.c:145
cleanup_net+0x3b3/0x840 net/core/net_namespace.c:484
process_one_work+0x793/0x14a0 kernel/workqueue.c:2116
worker_thread+0x5cc/0xff0 kernel/workqueue.c:2250
kthread+0x30d/0x420 kernel/kthread.c:232
ret_from_fork+0x24/0x30 arch/x86/entry/entry_64.S:404
batman_adv: batadv0: Interface deactivated: batadv_slave_0
batman_adv: batadv0: Removing interface: batadv_slave_0
batman_adv: batadv0: Interface deactivated: batadv_slave_1
batman_adv: batadv0: Removing interface: batadv_slave_1
device bridge_slave_1 left promiscuous mode
bridge0: port 2(bridge_slave_1) entered disabled state
device bridge_slave_0 left promiscuous mode
bridge0: port 1(bridge_slave_0) entered disabled state
batman_adv: batadv0: Interface deactivated: batadv_slave_0
batman_adv: batadv0: Removing interface: batadv_slave_0
batman_adv: batadv0: Interface deactivated: batadv_slave_1
batman_adv: batadv0: Removing interface: batadv_slave_1
device bridge_slave_1 left promiscuous mode
bridge0: port 2(bridge_slave_1) entered disabled state
device bridge_slave_0 left promiscuous mode
bridge0: port 1(bridge_slave_0) entered disabled state
batman_adv: batadv0: Interface deactivated: batadv_slave_0
batman_adv: batadv0: Removing interface: batadv_slave_0
batman_adv: batadv0: Interface deactivated: batadv_slave_1
batman_adv: batadv0: Removing interface: batadv_slave_1
device bridge_slave_1 left promiscuous mode
bridge0: port 2(bridge_slave_1) entered disabled state
device bridge_slave_0 left promiscuous mode
bridge0: port 1(bridge_slave_0) entered disabled state
batman_adv: batadv0: Interface deactivated: batadv_slave_0
batman_adv: batadv0: Removing interface: batadv_slave_0
batman_adv: batadv0: Interface deactivated: batadv_slave_1
batman_adv: batadv0: Removing interface: batadv_slave_1
device bridge_slave_1 left promiscuous mode
bridge0: port 2(bridge_slave_1) entered disabled state
device bridge_slave_0 left promiscuous mode
bridge0: port 1(bridge_slave_0) entered disabled state
device veth1_macvtap left promiscuous mode
device veth0_macvtap left promiscuous mode
device veth1_vlan left promiscuous mode
device veth0_vlan left promiscuous mode
device veth1_macvtap left promiscuous mode
device veth0_macvtap left promiscuous mode
device veth1_vlan left promiscuous mode
device veth0_vlan left promiscuous mode
device veth1_macvtap left promiscuous mode
device veth0_macvtap left promiscuous mode
device veth1_vlan left promiscuous mode
device veth0_vlan left promiscuous mode
device veth1_macvtap left promiscuous mode
device veth0_macvtap left promiscuous mode
device veth1_vlan left promiscuous mode
device veth0_vlan left promiscuous mode
device hsr_slave_1 left promiscuous mode
device hsr_slave_0 left promiscuous mode
team0 (unregistering): Port device team_slave_1 removed
team0 (unregistering): Port device team_slave_0 removed
bond0 (unregistering): Releasing backup interface bond_slave_1
bond0 (unregistering): Releasing backup interface bond_slave_0
bond0 (unregistering): Released all slaves
device hsr_slave_1 left promiscuous mode
device hsr_slave_0 left promiscuous mode
team0 (unregistering): Port device team_slave_1 removed
team0 (unregistering): Port device team_slave_0 removed
bond0 (unregistering): Releasing backup interface bond_slave_1
bond0 (unregistering): Releasing backup interface bond_slave_0
bond0 (unregistering): Released all slaves
device hsr_slave_1 left promiscuous mode
device hsr_slave_0 left promiscuous mode
team0 (unregistering): Port device team_slave_1 removed
team0 (unregistering): Port device team_slave_0 removed
bond0 (unregistering): Releasing backup interface bond_slave_1
bond0 (unregistering): Releasing backup interface bond_slave_0
bond0 (unregistering): Released all slaves
device hsr_slave_1 left promiscuous mode
device hsr_slave_0 left promiscuous mode
team0 (unregistering): Port device team_slave_1 removed
team0 (unregistering): Port device team_slave_0 removed
bond0 (unregistering): Releasing backup interface bond_slave_1
bond0 (unregistering): Releasing backup interface bond_slave_0
bond0 (unregistering): Released all slaves
* Struck through repros no longer work on HEAD.