syzbot


possible deadlock in do_ipv6_setsockopt

Status: closed as dup on 2018/01/30 13:59
Subsystems: netfilter
[Documentation on labels]
Reported-by: syzbot+a4c2dc980ac1af699b36@syzkaller.appspotmail.com
Fix commit: 3f34cfae1238 netfilter: on sockopt() acquire sock lock only in the required scope
First crash: 2291d, last: 2283d
Duplicate of
Title Repro Cause bisect Fix bisect Count Last Reported
possible deadlock in do_ip_getsockopt netfilter 22 2285d 2290d
Discussions (10)
Title Replies (including bot) Last reply
[PATCH 3.16 000/410] 3.16.57-rc1 review 426 (426) 2018/11/12 17:42
[PATCH 3.2 000/153] 3.2.102-rc1 review 155 (155) 2018/05/30 22:14
[PATCH 4.9 000/145] 4.9.84-stable review 153 (153) 2018/04/06 15:55
[PATCH 4.4 000/193] 4.4.118-stable review 227 (227) 2018/03/13 10:51
[PATCH 4.15 00/45] 4.15.6-stable review 53 (53) 2018/02/25 09:59
[PATCH 3.18 00/58] 3.18.96-stable review 64 (64) 2018/02/24 18:38
[PATCH 4.14 000/159] 4.14.22-stable review 164 (164) 2018/02/24 17:57
[PATCH 0/6] Netfilter fixes for net 8 (8) 2018/02/01 19:45
[PATCH net] netfilter: on sockopt() acquire sock lock only in the required scope 2 (2) 2018/01/31 15:39
possible deadlock in do_ipv6_setsockopt 1 (2) 2018/01/30 13:56
Similar bugs (3)
Kernel Title Repro Cause bisect Fix bisect Count Last Reported Patched Status
upstream possible deadlock in do_ipv6_setsockopt (2) netfilter 3642 2263d 2278d 4/26 fixed on 2018/02/26 20:04
upstream possible deadlock in do_ipv6_setsockopt (3) net 1 1134d 1134d 0/26 auto-closed as invalid on 2021/07/26 21:07
android-44 possible deadlock in do_ipv6_setsockopt 7 2002d 1849d 0/2 auto-closed as invalid on 2019/05/11 00:02

Sample crash report:
audit: type=1400 audit(1517075481.336:7): avc:  denied  { map } for  pid=3676 comm="syzkaller251332" path="/root/syzkaller251332582" dev="sda1" ino=16481 scontext=unconfined_u:system_r:insmod_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=1

======================================================
WARNING: possible circular locking dependency detected
4.15.0-rc9+ #283 Not tainted
------------------------------------------------------
syzkaller251332/3676 is trying to acquire lock:
 (sk_lock-AF_INET6){+.+.}, at: [<000000004222b5b8>] lock_sock include/net/sock.h:1461 [inline]
 (sk_lock-AF_INET6){+.+.}, at: [<000000004222b5b8>] do_ipv6_setsockopt.isra.8+0x3c5/0x39d0 net/ipv6/ipv6_sockglue.c:167

but task is already holding lock:
 (rtnl_mutex){+.+.}, at: [<00000000ee4ed558>] rtnl_lock+0x17/0x20 net/core/rtnetlink.c:72

which lock already depends on the new lock.


the existing dependency chain (in reverse order) is:

-> #1 (rtnl_mutex){+.+.}:
       __mutex_lock_common kernel/locking/mutex.c:756 [inline]
       __mutex_lock+0x16f/0x1a80 kernel/locking/mutex.c:893
       mutex_lock_nested+0x16/0x20 kernel/locking/mutex.c:908
       rtnl_lock+0x17/0x20 net/core/rtnetlink.c:72
       register_netdevice_notifier+0xad/0x860 net/core/dev.c:1590
       tee_tg_check+0x1a0/0x280 net/netfilter/xt_TEE.c:106
       xt_check_target+0x22c/0x7d0 net/netfilter/x_tables.c:845
       check_target net/ipv6/netfilter/ip6_tables.c:538 [inline]
       find_check_entry.isra.7+0x935/0xcf0 net/ipv6/netfilter/ip6_tables.c:580
       translate_table+0xf52/0x1690 net/ipv6/netfilter/ip6_tables.c:749
       do_replace net/ipv6/netfilter/ip6_tables.c:1167 [inline]
       do_ip6t_set_ctl+0x370/0x5f0 net/ipv6/netfilter/ip6_tables.c:1693
       nf_sockopt net/netfilter/nf_sockopt.c:106 [inline]
       nf_setsockopt+0x67/0xc0 net/netfilter/nf_sockopt.c:115
       ipv6_setsockopt+0x115/0x150 net/ipv6/ipv6_sockglue.c:928
       udpv6_setsockopt+0x45/0x80 net/ipv6/udp.c:1452
       sock_common_setsockopt+0x95/0xd0 net/core/sock.c:2968
       SYSC_setsockopt net/socket.c:1831 [inline]
       SyS_setsockopt+0x189/0x360 net/socket.c:1810
       entry_SYSCALL_64_fastpath+0x29/0xa0

-> #0 (sk_lock-AF_INET6){+.+.}:
       lock_acquire+0x1d5/0x580 kernel/locking/lockdep.c:3914
       lock_sock_nested+0xc2/0x110 net/core/sock.c:2770
       lock_sock include/net/sock.h:1461 [inline]
       do_ipv6_setsockopt.isra.8+0x3c5/0x39d0 net/ipv6/ipv6_sockglue.c:167
       ipv6_setsockopt+0xd7/0x150 net/ipv6/ipv6_sockglue.c:922
       udpv6_setsockopt+0x45/0x80 net/ipv6/udp.c:1452
       sock_common_setsockopt+0x95/0xd0 net/core/sock.c:2968
       SYSC_setsockopt net/socket.c:1831 [inline]
       SyS_setsockopt+0x189/0x360 net/socket.c:1810
       entry_SYSCALL_64_fastpath+0x29/0xa0

other info that might help us debug this:

 Possible unsafe locking scenario:

       CPU0                    CPU1
       ----                    ----
  lock(rtnl_mutex);
                               lock(sk_lock-AF_INET6);
                               lock(rtnl_mutex);
  lock(sk_lock-AF_INET6);

 *** DEADLOCK ***

1 lock held by syzkaller251332/3676:
 #0:  (rtnl_mutex){+.+.}, at: [<00000000ee4ed558>] rtnl_lock+0x17/0x20 net/core/rtnetlink.c:72

stack backtrace:
CPU: 0 PID: 3676 Comm: syzkaller251332 Not tainted 4.15.0-rc9+ #283
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
 __dump_stack lib/dump_stack.c:17 [inline]
 dump_stack+0x194/0x257 lib/dump_stack.c:53
 print_circular_bug.isra.37+0x2cd/0x2dc kernel/locking/lockdep.c:1218
 check_prev_add kernel/locking/lockdep.c:1858 [inline]
 check_prevs_add kernel/locking/lockdep.c:1971 [inline]
 validate_chain kernel/locking/lockdep.c:2412 [inline]
 __lock_acquire+0x30a8/0x3e00 kernel/locking/lockdep.c:3426
 lock_acquire+0x1d5/0x580 kernel/locking/lockdep.c:3914
 lock_sock_nested+0xc2/0x110 net/core/sock.c:2770
 lock_sock include/net/sock.h:1461 [inline]
 do_ipv6_setsockopt.isra.8+0x3c5/0x39d0 net/ipv6/ipv6_sockglue.c:167
 ipv6_setsockopt+0xd7/0x150 net/ipv6/ipv6_sockglue.c:922
 udpv6_setsockopt+0x45/0x80 net/ipv6/udp.c:1452
 sock_common_setsockopt+0x95/0xd0 net/core/sock.c:2968
 SYSC_setsockopt net/socket.c:1831 [inline]
 SyS_setsockopt+0x189/0x360 net/socket.c:1810
 entry_SYSCALL_64_fastpath+0x29/0xa0
RIP: 0033:0x4411d9
RSP: 002b:00007ffe8e9dd0d8 EFLAGS: 00000207 ORIG_RAX: 0000000000000036
RAX: ffffffffffffffda RBX: ffffffffffffffff RCX: 00000000004411d9
RDX: 000000000000002d RSI: 0000000000000029 RDI: 0000000000000004
RBP: 00000000006cb018 R08: 0000000000000088 R09: 0000000000000000
R10: 00

Crashes (109):
Time Kernel Commit Syzkaller Config Log Report Syz repro C repro VM info Assets (help?) Manager Title
2018/01/27 17:53 upstream c4e0ca7fa241 08146b1a .config console log report syz C ci-upstream-kasan-gce
2018/01/27 16:49 net-next-old 6bb46bc57c8e 08146b1a .config console log report syz C ci-upstream-net-kasan-gce
2018/02/03 07:20 upstream 03f51d4efa22 632a8c2c .config console log report ci-upstream-kasan-gce
2018/02/03 04:23 upstream 03f51d4efa22 632a8c2c .config console log report ci-upstream-kasan-gce
2018/02/03 00:59 upstream 03f51d4efa22 632a8c2c .config console log report ci-upstream-kasan-gce
2018/02/03 00:52 upstream 03f51d4efa22 632a8c2c .config console log report ci-upstream-kasan-gce
2018/02/02 22:15 upstream 03f51d4efa22 632a8c2c .config console log report ci-upstream-kasan-gce
2018/02/02 21:52 upstream 03f51d4efa22 632a8c2c .config console log report ci-upstream-kasan-gce
2018/02/02 19:00 upstream 03f51d4efa22 632a8c2c .config console log report ci-upstream-kasan-gce
2018/02/02 18:43 upstream 4bf772b14675 632a8c2c .config console log report ci-upstream-kasan-gce
2018/02/02 16:52 upstream 4bf772b14675 632a8c2c .config console log report ci-upstream-kasan-gce
2018/02/01 06:31 upstream 255442c93843 02553e22 .config console log report ci-upstream-kasan-gce
2018/01/31 22:47 upstream 3da90b159b14 02553e22 .config console log report ci-upstream-kasan-gce
2018/01/31 03:06 upstream 72906f38934a 02553e22 .config console log report ci-upstream-kasan-gce
2018/01/28 16:23 upstream c4e0ca7fa241 08d47756 .config console log report ci-upstream-kasan-gce
2018/01/28 13:17 upstream c4e0ca7fa241 08d47756 .config console log report ci-upstream-kasan-gce
2018/01/28 12:17 upstream c4e0ca7fa241 08d47756 .config console log report ci-upstream-kasan-gce
2018/01/28 10:20 upstream c4e0ca7fa241 08d47756 .config console log report ci-upstream-kasan-gce
2018/01/28 02:38 upstream c4e0ca7fa241 08146b1a .config console log report ci-upstream-kasan-gce
2018/01/27 22:30 upstream c4e0ca7fa241 08146b1a .config console log report ci-upstream-kasan-gce
2018/02/03 23:08 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 22:00 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 21:27 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 20:50 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 20:27 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 18:38 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 18:15 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 17:43 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 17:40 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 17:21 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 16:46 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 16:24 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 14:13 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 13:25 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 12:50 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 12:44 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 12:14 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 12:10 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 11:33 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 08:18 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 06:53 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
2018/02/03 05:53 net-next-old 255442c93843 632a8c2c .config console log report ci-upstream-net-kasan-gce
* Struck through repros no longer work on HEAD.