syzbot


possible deadlock in do_ipv6_setsockopt (4)

Status: upstream: reported on 2024/07/10 16:04
Subsystems: net
[Documentation on labels]
Reported-by: syzbot+3433b5cb8b2b70933f8d@syzkaller.appspotmail.com
First crash: 157d, last: 43m
Discussions (1)
Title Replies (including bot) Last reply
[syzbot] [net?] possible deadlock in do_ipv6_setsockopt (4) 0 (1) 2024/07/10 16:04
Similar bugs (4)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream possible deadlock in do_ipv6_setsockopt (2) netfilter 3642 2482d 2497d 4/28 fixed on 2018/02/26 20:04
upstream possible deadlock in do_ipv6_setsockopt (3) net 1 1354d 1353d 0/28 auto-closed as invalid on 2021/07/26 21:07
upstream possible deadlock in do_ipv6_setsockopt netfilter C 109 2503d 2510d 22/28 closed as dup on 2018/01/30 13:59
android-44 possible deadlock in do_ipv6_setsockopt 7 2222d 2068d 0/2 auto-closed as invalid on 2019/05/11 00:02

Sample crash report:
======================================================
WARNING: possible circular locking dependency detected
6.13.0-rc2-syzkaller-00031-gf92f4749861b #0 Not tainted
------------------------------------------------------
syz.7.4570/22692 is trying to acquire lock:
ffffffff8fabdbc8 (rtnl_mutex){+.+.}-{4:4}, at: do_ipv6_setsockopt+0x1f4d/0x4660 net/ipv6/ipv6_sockglue.c:566

but task is already holding lock:
ffff88802a445b28 (&smc->clcsock_release_lock){+.+.}-{4:4}, at: smc_setsockopt+0x101/0xc00 net/smc/af_smc.c:3056

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #2 (&smc->clcsock_release_lock){+.+.}-{4:4}:
       __mutex_lock_common kernel/locking/mutex.c:585 [inline]
       __mutex_lock+0x19b/0xa60 kernel/locking/mutex.c:735
       smc_switch_to_fallback+0x2d/0xa00 net/smc/af_smc.c:903
       smc_sendmsg+0x13d/0x520 net/smc/af_smc.c:2771
       sock_sendmsg_nosec net/socket.c:711 [inline]
       __sock_sendmsg net/socket.c:726 [inline]
       ____sys_sendmsg+0x9ae/0xb40 net/socket.c:2583
       ___sys_sendmsg+0x135/0x1e0 net/socket.c:2637
       __sys_sendmsg+0x16e/0x220 net/socket.c:2669
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #1 (sk_lock-AF_INET){+.+.}-{0:0}:
       lock_sock_nested+0x3a/0xf0 net/core/sock.c:3622
       lock_sock include/net/sock.h:1617 [inline]
       sockopt_lock_sock net/core/sock.c:1126 [inline]
       sockopt_lock_sock+0x54/0x70 net/core/sock.c:1117
       do_ip_getsockopt+0x115c/0x2bf0 net/ipv4/ip_sockglue.c:1703
       ip_getsockopt+0x9c/0x1e0 net/ipv4/ip_sockglue.c:1765
       raw_getsockopt+0x4d/0x1e0 net/ipv4/raw.c:865
       do_sock_getsockopt+0x3fe/0x870 net/socket.c:2374
       __sys_getsockopt+0x12f/0x260 net/socket.c:2403
       __do_sys_getsockopt net/socket.c:2410 [inline]
       __se_sys_getsockopt net/socket.c:2407 [inline]
       __x64_sys_getsockopt+0xbd/0x160 net/socket.c:2407
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

-> #0 (rtnl_mutex){+.+.}-{4:4}:
       check_prev_add kernel/locking/lockdep.c:3161 [inline]
       check_prevs_add kernel/locking/lockdep.c:3280 [inline]
       validate_chain kernel/locking/lockdep.c:3904 [inline]
       __lock_acquire+0x249e/0x3c40 kernel/locking/lockdep.c:5226
       lock_acquire.part.0+0x11b/0x380 kernel/locking/lockdep.c:5849
       __mutex_lock_common kernel/locking/mutex.c:585 [inline]
       __mutex_lock+0x19b/0xa60 kernel/locking/mutex.c:735
       do_ipv6_setsockopt+0x1f4d/0x4660 net/ipv6/ipv6_sockglue.c:566
       ipv6_setsockopt+0xcb/0x170 net/ipv6/ipv6_sockglue.c:993
       tcp_setsockopt+0xa4/0x100 net/ipv4/tcp.c:4030
       smc_setsockopt+0x1b4/0xc00 net/smc/af_smc.c:3064
       do_sock_setsockopt+0x222/0x480 net/socket.c:2313
       __sys_setsockopt+0x1a0/0x230 net/socket.c:2338
       __do_sys_setsockopt net/socket.c:2344 [inline]
       __se_sys_setsockopt net/socket.c:2341 [inline]
       __x64_sys_setsockopt+0xbd/0x160 net/socket.c:2341
       do_syscall_x64 arch/x86/entry/common.c:52 [inline]
       do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
       entry_SYSCALL_64_after_hwframe+0x77/0x7f

other info that might help us debug this:

Chain exists of:
  rtnl_mutex --> sk_lock-AF_INET --> &smc->clcsock_release_lock

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(&smc->clcsock_release_lock);
                               lock(sk_lock-AF_INET);
                               lock(&smc->clcsock_release_lock);
  lock(rtnl_mutex);

 *** DEADLOCK ***

1 lock held by syz.7.4570/22692:
 #0: ffff88802a445b28 (&smc->clcsock_release_lock){+.+.}-{4:4}, at: smc_setsockopt+0x101/0xc00 net/smc/af_smc.c:3056

stack backtrace:
CPU: 1 UID: 0 PID: 22692 Comm: syz.7.4570 Not tainted 6.13.0-rc2-syzkaller-00031-gf92f4749861b #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 09/13/2024
Call Trace:
 <TASK>
 __dump_stack lib/dump_stack.c:94 [inline]
 dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120
 print_circular_bug+0x41c/0x610 kernel/locking/lockdep.c:2074
 check_noncircular+0x31a/0x400 kernel/locking/lockdep.c:2206
 check_prev_add kernel/locking/lockdep.c:3161 [inline]
 check_prevs_add kernel/locking/lockdep.c:3280 [inline]
 validate_chain kernel/locking/lockdep.c:3904 [inline]
 __lock_acquire+0x249e/0x3c40 kernel/locking/lockdep.c:5226
 lock_acquire.part.0+0x11b/0x380 kernel/locking/lockdep.c:5849
 __mutex_lock_common kernel/locking/mutex.c:585 [inline]
 __mutex_lock+0x19b/0xa60 kernel/locking/mutex.c:735
 do_ipv6_setsockopt+0x1f4d/0x4660 net/ipv6/ipv6_sockglue.c:566
 ipv6_setsockopt+0xcb/0x170 net/ipv6/ipv6_sockglue.c:993
 tcp_setsockopt+0xa4/0x100 net/ipv4/tcp.c:4030
 smc_setsockopt+0x1b4/0xc00 net/smc/af_smc.c:3064
 do_sock_setsockopt+0x222/0x480 net/socket.c:2313
 __sys_setsockopt+0x1a0/0x230 net/socket.c:2338
 __do_sys_setsockopt net/socket.c:2344 [inline]
 __se_sys_setsockopt net/socket.c:2341 [inline]
 __x64_sys_setsockopt+0xbd/0x160 net/socket.c:2341
 do_syscall_x64 arch/x86/entry/common.c:52 [inline]
 do_syscall_64+0xcd/0x250 arch/x86/entry/common.c:83
 entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7f6398d85d19
Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 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 73 01 c3 48 c7 c1 a8 ff ff ff f7 d8 64 89 01 48
RSP: 002b:00007f6399c19038 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
RAX: ffffffffffffffda RBX: 00007f6398f75fa0 RCX: 00007f6398d85d19
RDX: 000000000000001b RSI: 0000000000000029 RDI: 0000000000000005
RBP: 00007f6398e01a20 R08: 0000000000000201 R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 0000000000000000 R14: 00007f6398f75fa0 R15: 00007fff95d7f6f8
 </TASK>

Crashes (2894):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/12/12 04:23 upstream f92f4749861b 6f1b0fa8 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/12 01:39 upstream f92f4749861b 6f1b0fa8 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/12 00:38 upstream 231825b2e1ff ff949d25 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-root possible deadlock in do_ipv6_setsockopt
2024/12/11 23:29 upstream f92f4749861b 6f1b0fa8 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 18:41 upstream f92f4749861b ff949d25 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce possible deadlock in do_ipv6_setsockopt
2024/12/11 16:18 upstream f92f4749861b ff949d25 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce possible deadlock in do_ipv6_setsockopt
2024/12/11 15:08 upstream f92f4749861b ff949d25 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 14:55 upstream f92f4749861b ff949d25 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 13:38 upstream f92f4749861b ff949d25 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 09:39 upstream f92f4749861b cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 08:35 upstream f92f4749861b cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 07:14 upstream f92f4749861b cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 07:03 upstream f92f4749861b cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 06:03 upstream f92f4749861b cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 04:52 upstream f92f4749861b cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 01:26 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/11 00:23 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-selinux-root possible deadlock in do_ipv6_setsockopt
2024/12/10 23:53 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 22:51 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 21:29 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 20:24 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 18:54 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 17:43 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 16:06 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 15:43 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 14:33 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 12:36 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 11:35 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 10:18 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 08:09 upstream 7cb1b4663150 cfc402b4 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 05:49 upstream 7cb1b4663150 deb72877 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 04:49 upstream 7cb1b4663150 deb72877 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 02:58 upstream 7cb1b4663150 deb72877 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/10 01:54 upstream 7cb1b4663150 deb72877 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 23:25 upstream 7cb1b4663150 deb72877 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 22:08 upstream 7cb1b4663150 deb72877 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 20:40 upstream 7cb1b4663150 deb72877 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 18:34 upstream fac04efc5c79 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 16:50 upstream fac04efc5c79 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 15:43 upstream fac04efc5c79 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 15:12 upstream fac04efc5c79 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 14:00 upstream fac04efc5c79 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 12:37 upstream fac04efc5c79 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 10:09 upstream fac04efc5c79 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 08:25 upstream 62b5a46999c7 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/12/09 06:02 upstream 62b5a46999c7 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-smack-root possible deadlock in do_ipv6_setsockopt
2024/12/02 01:23 upstream bcc8eda6d349 68914665 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-386 possible deadlock in do_ipv6_setsockopt
2024/12/09 02:15 upstream 62b5a46999c7 9ac0fdc6 .config console log report [disk image (non-bootable)] [vmlinux] [kernel image] ci-snapshot-upstream-root possible deadlock in do_ipv6_setsockopt
2024/08/12 00:40 upstream cb2e5ee8e7a0 6f4edef4 .config console log report info [disk image (non-bootable)] [vmlinux] [kernel image] ci-qemu-upstream-386 possible deadlock in do_ipv6_setsockopt
2024/12/10 00:49 net b4906787d49b 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-this-kasan-gce possible deadlock in do_ipv6_setsockopt
2024/12/05 19:11 net-next da4fa00abe56 6e50d07b .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-kasan-gce possible deadlock in do_ipv6_setsockopt
2024/07/07 17:10 net-next 2f5e6395714d bc4ebbb5 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-kasan-gce possible deadlock in do_ipv6_setsockopt
2024/12/07 23:27 linux-next af2ea8ab7a54 9ac0fdc6 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-linux-next-kasan-gce-root possible deadlock in do_ipv6_setsockopt
2024/12/06 02:47 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 7b1d1d4cfac0 946d28f0 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-gce-arm64 possible deadlock in do_ipv6_setsockopt
* Struck through repros no longer work on HEAD.