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: 136d, last: 6m
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 2461d 2476d 4/28 fixed on 2018/02/26 20:04
upstream possible deadlock in do_ipv6_setsockopt (3) net 1 1333d 1332d 0/28 auto-closed as invalid on 2021/07/26 21:07
upstream possible deadlock in do_ipv6_setsockopt netfilter C 109 2482d 2489d 22/28 closed as dup on 2018/01/30 13:59
android-44 possible deadlock in do_ipv6_setsockopt 7 2201d 2047d 0/2 auto-closed as invalid on 2019/05/11 00:02

Sample crash report:
======================================================
WARNING: possible circular locking dependency detected
6.12.0-syzkaller-01892-g8f7c8b88bda4 #0 Not tainted
------------------------------------------------------
syz.0.4463/26352 is trying to acquire lock:
ffffffff8face8a8 (rtnl_mutex){+.+.}-{4:4}, at: do_ipv6_setsockopt+0x1f4d/0x4800 net/ipv6/ipv6_sockglue.c:566

but task is already holding lock:
ffff888038f0ad28 (&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:902
       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:2581
       ___sys_sendmsg+0x135/0x1e0 net/socket.c:2635
       __sys_sendmsg+0x16e/0x220 net/socket.c:2667
       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:3617
       lock_sock include/net/sock.h:1611 [inline]
       sockopt_lock_sock net/core/sock.c:1131 [inline]
       sockopt_lock_sock+0x54/0x70 net/core/sock.c:1122
       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:2372
       __sys_getsockopt+0x12f/0x260 net/socket.c:2401
       __do_sys_getsockopt net/socket.c:2408 [inline]
       __se_sys_getsockopt net/socket.c:2405 [inline]
       __x64_sys_getsockopt+0xbd/0x160 net/socket.c:2405
       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/0x4800 net/ipv6/ipv6_sockglue.c:566
       ipv6_setsockopt+0xcb/0x170 net/ipv6/ipv6_sockglue.c:993
       tcp_setsockopt+0xa4/0x100 net/ipv4/tcp.c:4029
       smc_setsockopt+0x1b4/0xc00 net/smc/af_smc.c:3064
       do_sock_setsockopt+0x222/0x480 net/socket.c:2311
       __sys_setsockopt+0x1a0/0x230 net/socket.c:2336
       __do_sys_setsockopt net/socket.c:2342 [inline]
       __se_sys_setsockopt net/socket.c:2339 [inline]
       __x64_sys_setsockopt+0xbd/0x160 net/socket.c:2339
       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.0.4463/26352:
 #0: ffff888038f0ad28 (&smc->clcsock_release_lock){+.+.}-{4:4}, at: smc_setsockopt+0x101/0xc00 net/smc/af_smc.c:3056

stack backtrace:
CPU: 1 UID: 0 PID: 26352 Comm: syz.0.4463 Not tainted 6.12.0-syzkaller-01892-g8f7c8b88bda4 #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/30/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/0x4800 net/ipv6/ipv6_sockglue.c:566
 ipv6_setsockopt+0xcb/0x170 net/ipv6/ipv6_sockglue.c:993
 tcp_setsockopt+0xa4/0x100 net/ipv4/tcp.c:4029
 smc_setsockopt+0x1b4/0xc00 net/smc/af_smc.c:3064
 do_sock_setsockopt+0x222/0x480 net/socket.c:2311
 __sys_setsockopt+0x1a0/0x230 net/socket.c:2336
 __do_sys_setsockopt net/socket.c:2342 [inline]
 __se_sys_setsockopt net/socket.c:2339 [inline]
 __x64_sys_setsockopt+0xbd/0x160 net/socket.c:2339
 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:0x7efd2a57e819
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:00007efd2b325038 EFLAGS: 00000246 ORIG_RAX: 0000000000000036
RAX: ffffffffffffffda RBX: 00007efd2a736160 RCX: 00007efd2a57e819
RDX: 000000000000001b RSI: 0000000000000029 RDI: 0400000000000003
RBP: 00007efd2a5f175e R08: 000000000000056b R09: 0000000000000000
R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000000
R13: 0000000000000001 R14: 00007efd2a736160 R15: 00007fffb685b148
 </TASK>

Crashes (2334):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2024/11/21 06:42 upstream 8f7c8b88bda4 4b25d554 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/21 04:55 upstream 8f7c8b88bda4 4b25d554 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/21 02:22 upstream 8f7c8b88bda4 4b25d554 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/21 00:54 upstream 8f7c8b88bda4 4b25d554 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/20 22:42 upstream 8f7c8b88bda4 4fca1650 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/20 20:55 upstream 8f7c8b88bda4 4fca1650 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/20 15:51 upstream bf9aa14fc523 4fca1650 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/20 14:15 upstream bf9aa14fc523 4fca1650 .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/20 09:58 upstream bf9aa14fc523 7d02db5a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/20 09:18 upstream bf9aa14fc523 7d02db5a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/19 15:19 upstream 158f238aa69d 571351cb .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/19 14:05 upstream 158f238aa69d 571351cb .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/19 11:20 upstream 9fb2cfa4635a 571351cb .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/19 07:37 upstream 9fb2cfa4635a 571351cb .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/19 03:20 upstream 9fb2cfa4635a 571351cb .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/19 01:13 upstream 9fb2cfa4635a 571351cb .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 19:52 upstream adc218676eef e7bb5d6e .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 18:48 upstream adc218676eef e7bb5d6e .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 17:45 upstream adc218676eef e7bb5d6e .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 16:33 upstream adc218676eef e7bb5d6e .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 15:38 upstream adc218676eef e7bb5d6e .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 14:26 upstream adc218676eef e7bb5d6e .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 13:06 upstream adc218676eef e7bb5d6e .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 11:50 upstream adc218676eef e7bb5d6e .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 09:40 upstream adc218676eef cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 06:35 upstream f66d6acccbc0 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/18 03:09 upstream f66d6acccbc0 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/17 17:07 upstream 4a5df3796467 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/17 16:00 upstream 4a5df3796467 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/17 14:53 upstream 4a5df3796467 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/17 13:07 upstream 4a5df3796467 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/17 10:57 upstream 4a5df3796467 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/17 09:32 upstream 4a5df3796467 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/17 08:20 upstream 4a5df3796467 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/17 07:18 upstream 4a5df3796467 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/17 04:38 upstream 4a5df3796467 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/17 01:47 upstream e8bdb3c8be08 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/16 23:19 upstream e8bdb3c8be08 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/16 22:01 upstream e8bdb3c8be08 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/16 20:17 upstream e8bdb3c8be08 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/16 17:27 upstream e8bdb3c8be08 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/16 15:14 upstream e8bdb3c8be08 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/11/16 13:24 upstream f868cd251776 cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-qemu-gce-upstream-auto possible deadlock in do_ipv6_setsockopt
2024/09/07 14:58 upstream b31c44928842 9750182a .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce possible deadlock in do_ipv6_setsockopt
2024/08/30 08:34 upstream d5d547aa7b51 54fe8471 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-smack-root possible deadlock in do_ipv6_setsockopt
2024/08/29 20:42 upstream d5d547aa7b51 54fe8471 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-selinux-root possible deadlock in do_ipv6_setsockopt
2024/08/12 02:45 upstream cb2e5ee8e7a0 6f4edef4 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-root possible deadlock in do_ipv6_setsockopt
2024/11/20 05:59 upstream a5c93bfec0be 7d02db5a .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-kasan-gce-386 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/11/11 17:15 net 252e01e68241 97fe5517 .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-this-kasan-gce possible deadlock in do_ipv6_setsockopt
2024/11/18 02:02 net-next 38f83a57aa8e cfe3a04a .config console log report info [disk image] [vmlinux] [kernel image] ci-upstream-net-kasan-gce possible deadlock in do_ipv6_setsockopt
2024/11/17 21:03 net-next 38f83a57aa8e cfe3a04a .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/11/17 19:51 git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux.git for-kernelci 887407160d72 cfe3a04a .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.