syzbot


inconsistent lock state in l2tp_tunnel_register

Status: fixed on 2023/02/24 13:50
Subsystems: net
[Documentation on labels]
Reported-by: syzbot+50680ced9e98a61f7698@syzkaller.appspotmail.com
Fix commit: af295e854a4e l2tp: Don't sleep and disable BH under writer-side sk_callback_lock
First crash: 526d, last: 514d
Discussions (3)
Title Replies (including bot) Last reply
[PATCH net] l2tp: Don't sleep and disable BH under writer-side sk_callback_lock 15 (15) 2022/11/24 10:27
[PATCH net v2] l2tp: Don't sleep and disable BH under writer-side sk_callback_lock 2 (2) 2022/11/23 12:50
[syzbot] inconsistent lock state in l2tp_tunnel_register 0 (1) 2022/11/17 09:44

Sample crash report:
================================
WARNING: inconsistent lock state
6.1.0-rc6-syzkaller-00015-gc3eb11fbb826 #0 Not tainted
--------------------------------
inconsistent {IN-SOFTIRQ-R} -> {SOFTIRQ-ON-W} usage.
syz-executor.0/5942 [HC0[0]:SC0[0]:HE1:SE1] takes:
ffff88807d4983b8 (clock-AF_INET6){+++-}-{2:2}, at: l2tp_tunnel_register+0x126/0x1210 net/l2tp/l2tp_core.c:1477
{IN-SOFTIRQ-R} state was registered at:
  lock_acquire kernel/locking/lockdep.c:5668 [inline]
  lock_acquire+0x1e3/0x630 kernel/locking/lockdep.c:5633
  __raw_read_lock_bh include/linux/rwlock_api_smp.h:176 [inline]
  _raw_read_lock_bh+0x3f/0x70 kernel/locking/spinlock.c:252
  rds_tcp_data_ready+0x85/0x6d0 net/rds/tcp_recv.c:314
  tcp_data_ready+0x10a/0x520 net/ipv4/tcp_input.c:5005
  tcp_data_queue+0x1bb2/0x4c60 net/ipv4/tcp_input.c:5079
  tcp_rcv_established+0x8a9/0x2230 net/ipv4/tcp_input.c:6005
  tcp_v6_do_rcv+0x814/0x13c0 net/ipv6/tcp_ipv6.c:1502
  tcp_v6_rcv+0x2ea6/0x3840 net/ipv6/tcp_ipv6.c:1761
  ip6_protocol_deliver_rcu+0x2df/0x1950 net/ipv6/ip6_input.c:439
  ip6_input_finish+0x150/0x2c0 net/ipv6/ip6_input.c:484
  NF_HOOK include/linux/netfilter.h:302 [inline]
  NF_HOOK include/linux/netfilter.h:296 [inline]
  ip6_input+0xa0/0xd0 net/ipv6/ip6_input.c:493
  dst_input include/net/dst.h:455 [inline]
  ip6_rcv_finish net/ipv6/ip6_input.c:79 [inline]
  NF_HOOK include/linux/netfilter.h:302 [inline]
  NF_HOOK include/linux/netfilter.h:296 [inline]
  ipv6_rcv+0x250/0x380 net/ipv6/ip6_input.c:309
  __netif_receive_skb_one_core+0x114/0x180 net/core/dev.c:5489
  __netif_receive_skb+0x1f/0x1c0 net/core/dev.c:5603
  process_backlog+0x3e4/0x810 net/core/dev.c:5931
  __napi_poll+0xb8/0x770 net/core/dev.c:6498
  napi_poll net/core/dev.c:6565 [inline]
  net_rx_action+0xa00/0xde0 net/core/dev.c:6676
  __do_softirq+0x1fb/0xadc kernel/softirq.c:571
  do_softirq.part.0+0xde/0x130 kernel/softirq.c:472
  do_softirq kernel/softirq.c:464 [inline]
  __local_bh_enable_ip+0x106/0x130 kernel/softirq.c:396
  local_bh_enable include/linux/bottom_half.h:33 [inline]
  rcu_read_unlock_bh include/linux/rcupdate.h:808 [inline]
  ip6_finish_output2+0x5be/0x1530 net/ipv6/ip6_output.c:135
  __ip6_finish_output net/ipv6/ip6_output.c:195 [inline]
  ip6_finish_output+0x694/0x1170 net/ipv6/ip6_output.c:206
  NF_HOOK_COND include/linux/netfilter.h:291 [inline]
  ip6_output+0x1f1/0x540 net/ipv6/ip6_output.c:227
  dst_output include/net/dst.h:445 [inline]
  NF_HOOK include/linux/netfilter.h:302 [inline]
  NF_HOOK include/linux/netfilter.h:296 [inline]
  ip6_xmit+0x11f7/0x1c60 net/ipv6/ip6_output.c:343
  inet6_csk_xmit+0x3b5/0x6d0 net/ipv6/inet6_connection_sock.c:135
  __tcp_transmit_skb+0x1967/0x3800 net/ipv4/tcp_output.c:1402
  tcp_transmit_skb net/ipv4/tcp_output.c:1420 [inline]
  tcp_write_xmit+0x1025/0x6140 net/ipv4/tcp_output.c:2696
  __tcp_push_pending_frames+0xae/0x390 net/ipv4/tcp_output.c:2880
  tcp_push+0x49d/0x720 net/ipv4/tcp.c:729
  mptcp_push_release net/mptcp/protocol.c:1505 [inline]
  __mptcp_push_pending+0x653/0x770 net/mptcp/protocol.c:1595
  mptcp_sendmsg+0x9f4/0x1950 net/mptcp/protocol.c:1817
  inet6_sendmsg+0x9d/0xe0 net/ipv6/af_inet6.c:665
  sock_sendmsg_nosec net/socket.c:714 [inline]
  sock_sendmsg+0xd3/0x120 net/socket.c:734
  sock_write_iter+0x295/0x3d0 net/socket.c:1108
  call_write_iter include/linux/fs.h:2191 [inline]
  new_sync_write fs/read_write.c:491 [inline]
  vfs_write+0x9ed/0xdd0 fs/read_write.c:584
  ksys_write+0x1ec/0x250 fs/read_write.c:637
  do_syscall_x64 arch/x86/entry/common.c:50 [inline]
  do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
  entry_SYSCALL_64_after_hwframe+0x63/0xcd
irq event stamp: 2151
hardirqs last  enabled at (2151): [<ffffffff89f06934>] __raw_spin_unlock_irqrestore include/linux/spinlock_api_smp.h:151 [inline]
hardirqs last  enabled at (2151): [<ffffffff89f06934>] _raw_spin_unlock_irqrestore+0x54/0x70 kernel/locking/spinlock.c:194
hardirqs last disabled at (2150): [<ffffffff89f066c2>] __raw_spin_lock_irqsave include/linux/spinlock_api_smp.h:108 [inline]
hardirqs last disabled at (2150): [<ffffffff89f066c2>] _raw_spin_lock_irqsave+0x52/0x60 kernel/locking/spinlock.c:162
softirqs last  enabled at (2146): [<ffffffff87b48be1>] rcu_read_unlock_bh include/linux/rcupdate.h:804 [inline]
softirqs last  enabled at (2146): [<ffffffff87b48be1>] __dev_queue_xmit+0x1f21/0x3ba0 net/core/dev.c:4283
softirqs last disabled at (2140): [<ffffffff87b46ef3>] __dev_queue_xmit+0x233/0x3ba0 net/core/dev.c:4173

other info that might help us debug this:
 Possible unsafe locking scenario:

       CPU0
       ----
  lock(clock-AF_INET6);
  <Interrupt>
    lock(clock-AF_INET6);

 *** DEADLOCK ***

2 locks held by syz-executor.0/5942:
 #0: ffffffff8df504f0 (cb_lock){++++}-{3:3}, at: genl_rcv+0x19/0x40 net/netlink/genetlink.c:860
 #1: ffffffff8df505a8 (genl_mutex){+.+.}-{3:3}, at: genl_lock net/netlink/genetlink.c:33 [inline]
 #1: ffffffff8df505a8 (genl_mutex){+.+.}-{3:3}, at: genl_rcv_msg+0x50d/0x780 net/netlink/genetlink.c:848

stack backtrace:
CPU: 1 PID: 5942 Comm: syz-executor.0 Not tainted 6.1.0-rc6-syzkaller-00015-gc3eb11fbb826 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/26/2022
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:88 [inline]
 dump_stack_lvl+0xd1/0x138 lib/dump_stack.c:106
 print_usage_bug kernel/locking/lockdep.c:222 [inline]
 valid_state kernel/locking/lockdep.c:3975 [inline]
 mark_lock_irq kernel/locking/lockdep.c:4184 [inline]
 mark_lock.part.0.cold+0x3a/0xd8 kernel/locking/lockdep.c:4634
 mark_lock kernel/locking/lockdep.c:4598 [inline]
 mark_usage kernel/locking/lockdep.c:4547 [inline]
 __lock_acquire+0x893/0x56d0 kernel/locking/lockdep.c:5009
 lock_acquire kernel/locking/lockdep.c:5668 [inline]
 lock_acquire+0x1e3/0x630 kernel/locking/lockdep.c:5633
 __raw_write_lock include/linux/rwlock_api_smp.h:209 [inline]
 _raw_write_lock+0x2e/0x40 kernel/locking/spinlock.c:300
 l2tp_tunnel_register+0x126/0x1210 net/l2tp/l2tp_core.c:1477
 l2tp_nl_cmd_tunnel_create+0x3d6/0x8b0 net/l2tp/l2tp_netlink.c:245
 genl_family_rcv_msg_doit+0x228/0x320 net/netlink/genetlink.c:756
 genl_family_rcv_msg net/netlink/genetlink.c:833 [inline]
 genl_rcv_msg+0x445/0x780 net/netlink/genetlink.c:850
 netlink_rcv_skb+0x157/0x430 net/netlink/af_netlink.c:2540
 genl_rcv+0x28/0x40 net/netlink/genetlink.c:861
 netlink_unicast_kernel net/netlink/af_netlink.c:1319 [inline]
 netlink_unicast+0x547/0x7f0 net/netlink/af_netlink.c:1345
 netlink_sendmsg+0x91b/0xe10 net/netlink/af_netlink.c:1921
 sock_sendmsg_nosec net/socket.c:714 [inline]
 sock_sendmsg+0xd3/0x120 net/socket.c:734
 ____sys_sendmsg+0x712/0x8c0 net/socket.c:2482
 ___sys_sendmsg+0x110/0x1b0 net/socket.c:2536
 __sys_sendmsg+0xf7/0x1c0 net/socket.c:2565
 do_syscall_x64 arch/x86/entry/common.c:50 [inline]
 do_syscall_64+0x39/0xb0 arch/x86/entry/common.c:80
 entry_SYSCALL_64_after_hwframe+0x63/0xcd
RIP: 0033:0x7fa18a08c0d9
Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 f1 19 00 00 90 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 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007fa18ada0168 EFLAGS: 00000246 ORIG_RAX: 000000000000002e
RAX: ffffffffffffffda RBX: 00007fa18a1abf80 RCX: 00007fa18a08c0d9
RDX: 0000000000000000 RSI: 0000000020000240 RDI: 0000000000000004
RBP: 00007fa18a0e7ae9 R08: 0000000000000000 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 00007fa18a2cfb1f R14: 00007fa18ada0300 R15: 0000000000022000
 </TASK>

Crashes (5599):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2022/11/25 02:59 upstream c3eb11fbb826 62e26685 .config console log report info ci-upstream-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/25 00:57 upstream c3eb11fbb826 62e26685 .config console log report info ci-upstream-kasan-gce-smack-root inconsistent lock state in l2tp_tunnel_register
2022/11/24 20:54 upstream c3eb11fbb826 62e26685 .config console log report info ci-upstream-kasan-gce-root inconsistent lock state in l2tp_tunnel_register
2022/11/24 20:13 upstream c3eb11fbb826 62e26685 .config console log report info ci-upstream-kasan-gce-selinux-root inconsistent lock state in l2tp_tunnel_register
2022/11/24 17:59 upstream c3eb11fbb826 d6358a0d .config console log report info ci-qemu-upstream inconsistent lock state in l2tp_tunnel_register
2022/11/24 22:47 upstream c3eb11fbb826 62e26685 .config console log report info ci-upstream-kasan-gce-386 inconsistent lock state in l2tp_tunnel_register
2022/11/23 17:17 upstream eb7081409f94 3c2d90bc .config console log report info ci-qemu-upstream-386 inconsistent lock state in l2tp_tunnel_register
2022/11/23 09:16 net-old 178a4ff11903 75740b3f .config console log report info ci-upstream-net-this-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/17 09:44 net-old 064bc7312bd0 3a127a31 .config console log report info ci-upstream-net-this-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/17 08:33 net-old 064bc7312bd0 3a127a31 .config console log report info ci-upstream-net-this-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/30 07:17 net-next-old 7a168f560e3c 05dc7993 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/30 05:59 net-next-old 7a168f560e3c 05dc7993 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/30 03:59 net-next-old 7a168f560e3c 05dc7993 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/30 02:45 net-next-old 7a168f560e3c 05dc7993 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/30 01:30 net-next-old 7a168f560e3c 05dc7993 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/30 00:29 net-next-old 7a168f560e3c 05dc7993 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/29 21:07 net-next-old 7a168f560e3c 05dc7993 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/29 18:35 net-next-old 7a168f560e3c 05dc7993 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/29 14:37 net-next-old 7a168f560e3c 05dc7993 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/29 13:24 net-next-old 7a168f560e3c 05dc7993 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/29 10:48 net-next-old c672e3727989 ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/29 10:04 net-next-old c672e3727989 ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/29 07:19 net-next-old c672e3727989 ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/29 05:41 net-next-old c672e3727989 ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/29 04:06 net-next-old c672e3727989 ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 23:14 net-next-old a66d79ee0bd5 247de55b .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 22:07 net-next-old a66d79ee0bd5 247de55b .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 19:55 net-next-old a66d79ee0bd5 247de55b .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 18:38 net-next-old a66d79ee0bd5 247de55b .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 18:01 net-next-old a66d79ee0bd5 247de55b .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 16:29 net-next-old a66d79ee0bd5 247de55b .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 13:37 net-next-old a66d79ee0bd5 247de55b .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 13:10 net-next-old a66d79ee0bd5 247de55b .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 12:14 net-next-old a66d79ee0bd5 247de55b .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 12:14 net-next-old a66d79ee0bd5 247de55b .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 11:09 net-next-old a6e3d86ece0b 74a66371 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 10:04 net-next-old a6e3d86ece0b 74a66371 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 09:05 net-next-old a6e3d86ece0b 74a66371 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 07:58 net-next-old a6e3d86ece0b 74a66371 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/28 07:00 net-next-old a6e3d86ece0b 74a66371 .config console log report info ci-upstream-net-kasan-gce inconsistent lock state in l2tp_tunnel_register
2022/11/29 22:28 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f 05dc7993 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/29 19:46 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f 05dc7993 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/29 14:04 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f 05dc7993 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/29 12:56 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f 05dc7993 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/29 11:51 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/29 08:41 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/29 06:46 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/29 02:33 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/29 01:54 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/29 01:11 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/29 00:44 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f ca9683b8 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/28 23:37 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f 247de55b .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/28 21:05 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f 247de55b .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/28 14:59 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f 247de55b .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
2022/11/28 14:14 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 6d464646530f 247de55b .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 inconsistent lock state in l2tp_tunnel_register
* Struck through repros no longer work on HEAD.