====================================================== WARNING: possible circular locking dependency detected 4.14.303-syzkaller #0 Not tainted ------------------------------------------------------ syz-executor.3/8009 is trying to acquire lock: (rtnl_mutex){+.+.}, at: [] unregister_netdevice_notifier+0x5e/0x2b0 net/core/dev.c:1630 but task is already holding lock: (&xt[i].mutex){+.+.}, at: [] xt_find_table_lock+0x38/0x3d0 net/netfilter/x_tables.c:1088 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: -> #2 (&xt[i].mutex){+.+.}: __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893 target_revfn+0x43/0x210 net/netfilter/x_tables.c:354 xt_find_revision+0x15e/0x1d0 net/netfilter/x_tables.c:378 nfnl_compat_get+0x1f7/0x870 net/netfilter/nft_compat.c:678 nfnetlink_rcv_msg+0x9bb/0xc00 net/netfilter/nfnetlink.c:214 netlink_rcv_skb+0x125/0x390 net/netlink/af_netlink.c:2454 nfnetlink_rcv+0x1ab/0x1da0 net/netfilter/nfnetlink.c:515 netlink_unicast_kernel net/netlink/af_netlink.c:1296 [inline] netlink_unicast+0x437/0x610 net/netlink/af_netlink.c:1322 netlink_sendmsg+0x648/0xbc0 net/netlink/af_netlink.c:1893 sock_sendmsg_nosec net/socket.c:646 [inline] sock_sendmsg+0xb5/0x100 net/socket.c:656 ___sys_sendmsg+0x6c8/0x800 net/socket.c:2062 __sys_sendmsg+0xa3/0x120 net/socket.c:2096 SYSC_sendmsg net/socket.c:2107 [inline] SyS_sendmsg+0x27/0x40 net/socket.c:2103 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x5e/0xd3 -> #1 (&table[i].mutex){+.+.}: __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893 nf_tables_netdev_event+0x10d/0x4d0 net/netfilter/nf_tables_netdev.c:122 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] rollback_registered_many+0x765/0xbb0 net/core/dev.c:7211 rollback_registered+0xca/0x170 net/core/dev.c:7253 unregister_netdevice_queue+0x1b4/0x360 net/core/dev.c:8274 unregister_netdevice include/linux/netdevice.h:2444 [inline] __tun_detach+0xca2/0xf60 drivers/net/tun.c:584 tun_detach drivers/net/tun.c:594 [inline] tun_chr_close+0x41/0x60 drivers/net/tun.c:2732 __fput+0x25f/0x7a0 fs/file_table.c:210 task_work_run+0x11f/0x190 kernel/task_work.c:113 tracehook_notify_resume include/linux/tracehook.h:191 [inline] exit_to_usermode_loop+0x1ad/0x200 arch/x86/entry/common.c:164 prepare_exit_to_usermode arch/x86/entry/common.c:199 [inline] syscall_return_slowpath arch/x86/entry/common.c:270 [inline] do_syscall_64+0x4a3/0x640 arch/x86/entry/common.c:297 entry_SYSCALL_64_after_hwframe+0x5e/0xd3 -> #0 (rtnl_mutex){+.+.}: lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893 unregister_netdevice_notifier+0x5e/0x2b0 net/core/dev.c:1630 tee_tg_destroy+0x5c/0xb0 net/netfilter/xt_TEE.c:123 cleanup_entry+0x232/0x310 net/ipv6/netfilter/ip6_tables.c:685 __do_replace+0x38d/0x580 net/ipv4/netfilter/arp_tables.c:930 do_replace net/ipv6/netfilter/ip6_tables.c:1162 [inline] do_ip6t_set_ctl+0x256/0x3b0 net/ipv6/netfilter/ip6_tables.c:1688 nf_sockopt net/netfilter/nf_sockopt.c:106 [inline] nf_setsockopt+0x5f/0xb0 net/netfilter/nf_sockopt.c:115 ipv6_setsockopt+0xc0/0x120 net/ipv6/ipv6_sockglue.c:944 tcp_setsockopt+0x7b/0xc0 net/ipv4/tcp.c:2831 SYSC_setsockopt net/socket.c:1865 [inline] SyS_setsockopt+0x110/0x1e0 net/socket.c:1844 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x5e/0xd3 other info that might help us debug this: Chain exists of: rtnl_mutex --> &table[i].mutex --> &xt[i].mutex Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(&xt[i].mutex); lock(&table[i].mutex); lock(&xt[i].mutex); lock(rtnl_mutex); *** DEADLOCK *** 1 lock held by syz-executor.3/8009: #0: (&xt[i].mutex){+.+.}, at: [] xt_find_table_lock+0x38/0x3d0 net/netfilter/x_tables.c:1088 stack backtrace: CPU: 0 PID: 8009 Comm: syz-executor.3 Not tainted 4.14.303-syzkaller #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/12/2023 Call Trace: __dump_stack lib/dump_stack.c:17 [inline] dump_stack+0x1b2/0x281 lib/dump_stack.c:58 print_circular_bug.constprop.0.cold+0x2d7/0x41e kernel/locking/lockdep.c:1258 check_prev_add kernel/locking/lockdep.c:1905 [inline] check_prevs_add kernel/locking/lockdep.c:2022 [inline] validate_chain kernel/locking/lockdep.c:2464 [inline] __lock_acquire+0x2e0e/0x3f20 kernel/locking/lockdep.c:3491 lock_acquire+0x170/0x3f0 kernel/locking/lockdep.c:3998 __mutex_lock_common kernel/locking/mutex.c:756 [inline] __mutex_lock+0xc4/0x1310 kernel/locking/mutex.c:893 unregister_netdevice_notifier+0x5e/0x2b0 net/core/dev.c:1630 tee_tg_destroy+0x5c/0xb0 net/netfilter/xt_TEE.c:123 cleanup_entry+0x232/0x310 net/ipv6/netfilter/ip6_tables.c:685 __do_replace+0x38d/0x580 net/ipv4/netfilter/arp_tables.c:930 do_replace net/ipv6/netfilter/ip6_tables.c:1162 [inline] do_ip6t_set_ctl+0x256/0x3b0 net/ipv6/netfilter/ip6_tables.c:1688 nf_sockopt net/netfilter/nf_sockopt.c:106 [inline] nf_setsockopt+0x5f/0xb0 net/netfilter/nf_sockopt.c:115 ipv6_setsockopt+0xc0/0x120 net/ipv6/ipv6_sockglue.c:944 tcp_setsockopt+0x7b/0xc0 net/ipv4/tcp.c:2831 SYSC_setsockopt net/socket.c:1865 [inline] SyS_setsockopt+0x110/0x1e0 net/socket.c:1844 do_syscall_64+0x1d5/0x640 arch/x86/entry/common.c:292 entry_SYSCALL_64_after_hwframe+0x5e/0xd3 RIP: 0033:0x7fc9bbe0171a RSP: 002b:00007fff725142d8 EFLAGS: 00000206 ORIG_RAX: 0000000000000036 RAX: ffffffffffffffda RBX: 0000000000000029 RCX: 00007fc9bbe0171a RDX: 0000000000000040 RSI: 0000000000000029 RDI: 0000000000000003 RBP: 00007fff72514300 R08: 00000000000003b8 R09: ffffffffff000000 R10: 00007fc9bbef7bc0 R11: 0000000000000206 R12: 00007fff72514360 R13: 0000000000000003 R14: 00007fff725142fc R15: 00007fc9bbef7b60 xt_hashlimit: size too large, truncated to 1048576 ip6_tables: ip6tables: counters copy to user failed while replacing table unregister_netdevice: waiting for ip6gre0 to become free. Usage count = -1 xt_hashlimit: size too large, truncated to 1048576 ip6_tables: ip6tables: counters copy to user failed while replacing table caif:caif_disconnect_client(): nothing to disconnect xt_hashlimit: size too large, truncated to 1048576 ip6_tables: ip6tables: counters copy to user failed while replacing table caif:caif_disconnect_client(): nothing to disconnect caif:caif_disconnect_client(): nothing to disconnect caif:caif_disconnect_client(): nothing to disconnect libceph: resolve 'd8' (ret=-3): failed libceph: parse_ips bad ip '[d8:.' libceph: resolve 'd8' (ret=-3): failed nla_parse: 1 callbacks suppressed netlink: 4 bytes leftover after parsing attributes in process `syz-executor.0'. libceph: parse_ips bad ip '[d8:.' libceph: resolve 'd8' (ret=-3): failed netlink: 4 bytes leftover after parsing attributes in process `syz-executor.0'. libceph: parse_ips bad ip '[d8:.' netlink: 4 bytes leftover after parsing attributes in process `syz-executor.0'. netlink: 4 bytes leftover after parsing attributes in process `syz-executor.5'. libceph: resolve 'd8' (ret=-3): failed libceph: parse_ips bad ip '[d8:.' netlink: 4 bytes leftover after parsing attributes in process `syz-executor.0'. netlink: 4 bytes leftover after parsing attributes in process `syz-executor.2'. new mount options do not match the existing superblock, will be ignored netlink: 4 bytes leftover after parsing attributes in process `syz-executor.5'. new mount options do not match the existing superblock, will be ignored netlink: 4 bytes leftover after parsing attributes in process `syz-executor.2'. new mount options do not match the existing superblock, will be ignored netlink: 4 bytes leftover after parsing attributes in process `syz-executor.5'. new mount options do not match the existing superblock, will be ignored netlink: 4 bytes leftover after parsing attributes in process `syz-executor.2'. new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored new mount options do not match the existing superblock, will be ignored caif:caif_disconnect_client(): nothing to disconnect caif:caif_disconnect_client(): nothing to disconnect bridge0: port 2(bridge_slave_1) entered disabled state bridge0: port 1(bridge_slave_0) entered disabled state bridge0: port 2(bridge_slave_1) entered disabled state bridge0: port 1(bridge_slave_0) entered disabled state delete_channel: no stack delete_channel: no stack delete_channel: no stack delete_channel: no stack audit: type=1800 audit(1674493375.147:91): pid=14260 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.3" name="file0" dev="sda1" ino=14554 res=0 audit: type=1804 audit(1674493375.157:92): pid=14260 uid=0 auid=4294967295 ses=4294967295 op="invalid_pcr" cause="open_writers" comm="syz-executor.3" name="/root/syzkaller-testdir3472121487/syzkaller.JxGJKi/147/file0" dev="sda1" ino=14554 res=1 base_sock_release(ffff88806292f1c0) sk=ffff88806071eb40 audit: type=1800 audit(1674493377.417:93): pid=14319 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.5" name="file0" dev="sda1" ino=14591 res=0 audit: type=1804 audit(1674493377.417:94): pid=14319 uid=0 auid=4294967295 ses=4294967295 op="invalid_pcr" cause="open_writers" comm="syz-executor.5" name="/root/syzkaller-testdir3593578417/syzkaller.Ad1i1z/145/file0" dev="sda1" ino=14591 res=1 audit: type=1800 audit(1674493377.417:95): pid=14325 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.3" name="file0" dev="sda1" ino=14592 res=0 audit: type=1804 audit(1674493377.437:96): pid=14325 uid=0 auid=4294967295 ses=4294967295 op="invalid_pcr" cause="open_writers" comm="syz-executor.3" name="/root/syzkaller-testdir3472121487/syzkaller.JxGJKi/148/file0" dev="sda1" ino=14592 res=1 audit: type=1800 audit(1674493379.147:97): pid=14344 uid=0 auid=4294967295 ses=4294967295 op="collect_data" cause="failed(directio)" comm="syz-executor.3" name="file0" dev="sda1" ino=14595 res=0