====================================================== [ INFO: possible circular locking dependency detected ] 4.9.111-g03c70fe #6 Not tainted ------------------------------------------------------- syz-executor2/17451 is trying to acquire lock: (rtnl_mutex){+.+.+.}, at: [] rtnl_lock+0x17/0x20 net/core/rtnetlink.c:70 but task is already holding lock: (sk_lock-AF_INET){+.+.+.}, at: [] lock_sock include/net/sock.h:1404 [inline] (sk_lock-AF_INET){+.+.+.}, at: [] do_ip_setsockopt.isra.13+0x269/0x2b10 net/ipv4/ip_sockglue.c:636 which lock already depends on the new lock. the existing dependency chain (in reverse order) is: lock_acquire+0x130/0x3e0 kernel/locking/lockdep.c:3756 lock_sock_nested+0xc6/0x120 net/core/sock.c:2511 lock_sock include/net/sock.h:1404 [inline] do_ip_setsockopt.isra.13+0x12a/0x2b10 net/ipv4/ip_sockglue.c:636 ip_setsockopt+0x3a/0xb0 net/ipv4/ip_sockglue.c:1240 udp_setsockopt+0x4a/0x90 net/ipv4/udp.c:2091 sock_common_setsockopt+0x9a/0xe0 net/core/sock.c:2706 SYSC_setsockopt net/socket.c:1772 [inline] SyS_setsockopt+0x166/0x260 net/socket.c:1751 do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282 entry_SYSCALL_64_after_swapgs+0x5d/0xdb check_prev_add kernel/locking/lockdep.c:1828 [inline] check_prevs_add kernel/locking/lockdep.c:1938 [inline] validate_chain kernel/locking/lockdep.c:2265 [inline] __lock_acquire+0x3019/0x4070 kernel/locking/lockdep.c:3345 lock_acquire+0x130/0x3e0 kernel/locking/lockdep.c:3756 __mutex_lock_common kernel/locking/mutex.c:521 [inline] mutex_lock_nested+0xc0/0x870 kernel/locking/mutex.c:621 rtnl_lock+0x17/0x20 net/core/rtnetlink.c:70 mrtsock_destruct+0x3b/0x1e0 net/ipv4/ipmr.c:1231 ip_ra_control+0x2c2/0x420 net/ipv4/ip_sockglue.c:360 do_ip_setsockopt.isra.13+0x15ff/0x2b10 net/ipv4/ip_sockglue.c:1137 ip_setsockopt+0x3a/0xb0 net/ipv4/ip_sockglue.c:1240 raw_setsockopt+0xb7/0xd0 net/ipv4/raw.c:833 sock_common_setsockopt+0x9a/0xe0 net/core/sock.c:2706 SYSC_setsockopt net/socket.c:1772 [inline] SyS_setsockopt+0x166/0x260 net/socket.c:1751 do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282 entry_SYSCALL_64_after_swapgs+0x5d/0xdb other info that might help us debug this: Possible unsafe locking scenario: CPU0 CPU1 ---- ---- lock(sk_lock-AF_INET); lock(rtnl_mutex); lock(sk_lock-AF_INET); lock(rtnl_mutex); *** DEADLOCK *** 1 lock held by syz-executor2/17451: #0: (sk_lock-AF_INET){+.+.+.}, at: [] lock_sock include/net/sock.h:1404 [inline] #0: (sk_lock-AF_INET){+.+.+.}, at: [] do_ip_setsockopt.isra.13+0x269/0x2b10 net/ipv4/ip_sockglue.c:636 stack backtrace: CPU: 1 PID: 17451 Comm: syz-executor2 Not tainted 4.9.111-g03c70fe #6 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 ffff8801cd1775f8 ffffffff81eb2729 ffffffff8559cef0 ffffffff855e7800 ffffffff8559cef0 ffff8801a089e8e8 ffff8801a089e000 ffff8801cd177640 ffffffff814263a4 0000000000000001 00000000a089e000 0000000000000001 Call Trace: [] __dump_stack lib/dump_stack.c:15 [inline] [] dump_stack+0xc1/0x128 lib/dump_stack.c:51 [] print_circular_bug.cold.51+0x1bd/0x27d kernel/locking/lockdep.c:1202 [] check_prev_add kernel/locking/lockdep.c:1828 [inline] [] check_prevs_add kernel/locking/lockdep.c:1938 [inline] [] validate_chain kernel/locking/lockdep.c:2265 [inline] [] __lock_acquire+0x3019/0x4070 kernel/locking/lockdep.c:3345 [] lock_acquire+0x130/0x3e0 kernel/locking/lockdep.c:3756 [] __mutex_lock_common kernel/locking/mutex.c:521 [inline] [] mutex_lock_nested+0xc0/0x870 kernel/locking/mutex.c:621 [] rtnl_lock+0x17/0x20 net/core/rtnetlink.c:70 [] mrtsock_destruct+0x3b/0x1e0 net/ipv4/ipmr.c:1231 [] ip_ra_control+0x2c2/0x420 net/ipv4/ip_sockglue.c:360 [] do_ip_setsockopt.isra.13+0x15ff/0x2b10 net/ipv4/ip_sockglue.c:1137 [] ip_setsockopt+0x3a/0xb0 net/ipv4/ip_sockglue.c:1240 [] raw_setsockopt+0xb7/0xd0 net/ipv4/raw.c:833 [] sock_common_setsockopt+0x9a/0xe0 net/core/sock.c:2706 [] SYSC_setsockopt net/socket.c:1772 [inline] [] SyS_setsockopt+0x166/0x260 net/socket.c:1751 [] do_syscall_64+0x1a6/0x490 arch/x86/entry/common.c:282 [] entry_SYSCALL_64_after_swapgs+0x5d/0xdb netlink: 20 bytes leftover after parsing attributes in process `syz-executor5'. netlink: 20 bytes leftover after parsing attributes in process `syz-executor5'. netlink: 20 bytes leftover after parsing attributes in process `syz-executor5'. netlink: 20 bytes leftover after parsing attributes in process `syz-executor5'. device lo left promiscuous mode blk_update_request: 898 callbacks suppressed blk_update_request: I/O error, dev loop0, sector 0 buffer_io_error: 898 callbacks suppressed Buffer I/O error on dev loop0, logical block 0, lost async page write blk_update_request: I/O error, dev loop0, sector 8 Buffer I/O error on dev loop0, logical block 1, lost async page write blk_update_request: I/O error, dev loop0, sector 16 Buffer I/O error on dev loop0, logical block 2, lost async page write blk_update_request: I/O error, dev loop0, sector 24 Buffer I/O error on dev loop0, logical block 3, lost async page write blk_update_request: I/O error, dev loop0, sector 32 Buffer I/O error on dev loop0, logical block 4, lost async page write blk_update_request: I/O error, dev loop0, sector 40 Buffer I/O error on dev loop0, logical block 5, lost async page write blk_update_request: I/O error, dev loop0, sector 48 Buffer I/O error on dev loop0, logical block 6, lost async page write blk_update_request: I/O error, dev loop0, sector 56 Buffer I/O error on dev loop0, logical block 7, lost async page write blk_update_request: I/O error, dev loop0, sector 64 Buffer I/O error on dev loop0, logical block 8, lost async page write blk_update_request: I/O error, dev loop0, sector 72 Buffer I/O error on dev loop0, logical block 9, lost async page write device lo entered promiscuous mode device lo left promiscuous mode IPVS: Creating netns size=2536 id=46 pktgen: kernel_thread() failed for cpu 0 pktgen: Cannot create thread for cpu 0 (-4) pktgen: kernel_thread() failed for cpu 1 pktgen: Cannot create thread for cpu 1 (-4) pktgen: Initialization failed for all threads device lo entered promiscuous mode device lo left promiscuous mode device lo entered promiscuous mode device lo entered promiscuous mode device lo left promiscuous mode device lo left promiscuous mode device lo entered promiscuous mode device lo left promiscuous mode device lo entered promiscuous mode device lo entered promiscuous mode device lo left promiscuous mode device lo left promiscuous mode device lo entered promiscuous mode device lo left promiscuous mode pktgen: kernel_thread() failed for cpu 0 pktgen: Cannot create thread for cpu 0 (-4) pktgen: kernel_thread() failed for cpu 1 pktgen: Cannot create thread for cpu 1 (-4) pktgen: Initialization failed for all threads pktgen: kernel_thread() failed for cpu 0 pktgen: Cannot create thread for cpu 0 (-4) pktgen: kernel_thread() failed for cpu 1 pktgen: Cannot create thread for cpu 1 (-4) pktgen: Initialization failed for all threads device lo entered promiscuous mode device lo entered promiscuous mode device lo left promiscuous mode device lo left promiscuous mode