1 # Note: 185-188 have the same root cause. 2 TITLE: possible deadlock in rtnl_lock 3 4 [ 82.159264] ====================================================== 5 [ 82.165575] WARNING: possible circular locking dependency detected 6 [ 82.171877] 4.15.0+ #221 Not tainted 7 [ 82.175574] ------------------------------------------------------ 8 [ 82.181875] syz-executor0/4217 is trying to acquire lock: 9 [ 82.187393] (rtnl_mutex){+.+.}, at: [<00000000ac220e5b>] rtnl_lock+0x17/0x20 10 [ 82.194670] 11 [ 82.194670] but task is already holding lock: 12 [ 82.200628] (&xt[i].mutex){+.+.}, at: [<000000008835a5fc>] xt_find_table_lock+0x3e/0x3e0 13 [ 82.208949] 14 [ 82.208949] which lock already depends on the new lock. 15 [ 82.208949] 16 [ 82.217245] 17 [ 82.217245] the existing dependency chain (in reverse order) is: 18 [ 82.224847] 19 [ 82.224847] -> #2 (&xt[i].mutex){+.+.}: 20 [ 82.230301] __mutex_lock+0x16f/0x1a80 21 [ 82.234698] mutex_lock_nested+0x16/0x20 22 [ 82.239270] xt_find_revision+0xc9/0x2b0 23 [ 82.243836] do_ip6t_get_ctl+0x963/0xaf0 24 [ 82.248402] nf_getsockopt+0x6a/0xc0 25 [ 82.252628] ipv6_getsockopt+0x1df/0x2e0 26 [ 82.257181] tcp_getsockopt+0x82/0xd0 27 [ 82.261478] sock_common_getsockopt+0x95/0xd0 28 [ 82.266465] SyS_getsockopt+0x178/0x340 29 [ 82.270931] entry_SYSCALL_64_fastpath+0x29/0xa0 30 [ 82.276178] 31 [ 82.276178] -> #1 (sk_lock-AF_INET6){+.+.}: 32 [ 82.281955] lock_sock_nested+0xc2/0x110 33 [ 82.286511] do_ipv6_setsockopt.isra.8+0x3c5/0x39d0 34 [ 82.292020] ipv6_setsockopt+0xd7/0x130 35 [ 82.296485] rawv6_setsockopt+0x4a/0xf0 36 [ 82.300951] sock_common_setsockopt+0x95/0xd0 37 [ 82.305938] SyS_setsockopt+0x189/0x360 38 [ 82.310404] entry_SYSCALL_64_fastpath+0x29/0xa0 39 [ 82.315648] 40 [ 82.315648] -> #0 (rtnl_mutex){+.+.}: 41 [ 82.320904] lock_acquire+0x1d5/0x580 42 [ 82.325195] __mutex_lock+0x16f/0x1a80 43 [ 82.329577] mutex_lock_nested+0x16/0x20 44 [ 82.334133] rtnl_lock+0x17/0x20 45 [ 82.337991] unregister_netdevice_notifier+0x91/0x4e0 46 [ 82.343677] clusterip_tg_destroy+0x389/0x6e0 47 [ 82.348665] cleanup_entry+0x218/0x350 48 [ 82.353041] __do_replace+0x79d/0xa50 49 [ 82.357330] do_ipt_set_ctl+0x40f/0x5f0 50 [ 82.361794] nf_setsockopt+0x67/0xc0 51 [ 82.365998] ip_setsockopt+0x97/0xa0 52 [ 82.370210] tcp_setsockopt+0x82/0xd0 53 [ 82.374503] sock_common_setsockopt+0x95/0xd0 54 [ 82.379488] SyS_setsockopt+0x189/0x360 55 [ 82.383951] entry_SYSCALL_64_fastpath+0x29/0xa0 56 [ 82.389194] 57 [ 82.389194] other info that might help us debug this: 58 [ 82.389194] 59 [ 82.397306] Chain exists of: 60 [ 82.397306] rtnl_mutex --> sk_lock-AF_INET6 --> &xt[i].mutex 61 [ 82.397306] 62 [ 82.407594] Possible unsafe locking scenario: 63 [ 82.407594] 64 [ 82.413618] CPU0 CPU1 65 [ 82.418255] ---- ---- 66 [ 82.422888] lock(&xt[i].mutex); 67 [ 82.426310] lock(sk_lock-AF_INET6); 68 [ 82.432596] lock(&xt[i].mutex); 69 [ 82.438536] lock(rtnl_mutex); 70 [ 82.441786] 71 [ 82.441786] *** DEADLOCK *** 72 [ 82.441786] 73 [ 82.447816] 1 lock held by syz-executor0/4217: 74 [ 82.452362] #0: (&xt[i].mutex){+.+.}, at: [<000000008835a5fc>] xt_find_table_lock+0x3e/0x3e0 75 [ 82.461090] 76 [ 82.461090] stack backtrace: 77 [ 82.465557] CPU: 1 PID: 4217 Comm: syz-executor0 Not tainted 4.15.0+ #221 78 [ 82.472450] Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011 79 [ 82.481772] Call Trace: 80 [ 82.484336] dump_stack+0x194/0x257 81 [ 82.487933] ? arch_local_irq_restore+0x53/0x53 82 [ 82.492576] print_circular_bug.isra.38+0x2cd/0x2dc 83 [ 82.497565] ? save_trace+0xe0/0x2b0 84 [ 82.501250] __lock_acquire+0x30a8/0x3e00 85 [ 82.505369] ? print_irqtrace_events+0x270/0x270 86 [ 82.510099] ? debug_check_no_locks_freed+0x3c0/0x3c0 87 [ 82.515261] ? print_irqtrace_events+0x270/0x270 88 [ 82.519990] ? print_irqtrace_events+0x270/0x270 89 [ 82.524718] ? __lock_acquire+0x664/0x3e00 90 [ 82.528924] ? __lock_acquire+0x664/0x3e00 91 [ 82.533130] ? __is_insn_slot_addr+0x1fc/0x330 92 [ 82.537685] ? lock_downgrade+0x980/0x980 93 [ 82.541808] ? lock_release+0xa40/0xa40 94 [ 82.545754] ? bpf_prog_kallsyms_find+0xbd/0x440 95 [ 82.550483] ? modules_open+0xa0/0xa0 96 [ 82.554254] ? trace_raw_output_xdp_redirect_map_err+0x440/0x440 97 [ 82.560369] ? lock_downgrade+0x980/0x980 98 [ 82.564492] ? __free_insn_slot+0x5c0/0x5c0 99 [ 82.568782] ? check_noncircular+0x20/0x20 100 [ 82.572986] lock_acquire+0x1d5/0x580 101 [ 82.576759] ? lock_acquire+0x1d5/0x580 102 [ 82.580705] ? rtnl_lock+0x17/0x20 103 [ 82.584218] ? lock_release+0xa40/0xa40 104 [ 82.588707] ? trace_event_raw_event_sched_switch+0x800/0x800 105 [ 82.594565] ? unwind_get_return_address+0x61/0xa0 106 [ 82.599467] ? rcu_note_context_switch+0x710/0x710 107 [ 82.604377] ? __might_sleep+0x95/0x190 108 [ 82.608332] ? rtnl_lock+0x17/0x20 109 [ 82.611847] __mutex_lock+0x16f/0x1a80 110 [ 82.615706] ? rtnl_lock+0x17/0x20 111 [ 82.619216] ? save_trace+0xe0/0x2b0 112 [ 82.622903] ? rtnl_lock+0x17/0x20 113 [ 82.626412] ? __lock_acquire+0x36c0/0x3e00 114 [ 82.630709] ? mutex_lock_io_nested+0x1900/0x1900 115 [ 82.635524] ? debug_check_no_locks_freed+0x3c0/0x3c0 116 [ 82.640685] ? debug_check_no_locks_freed+0x3c0/0x3c0 117 [ 82.645848] ? __free_insn_slot+0x5c0/0x5c0 118 [ 82.650143] ? is_bpf_text_address+0xa4/0x120 119 [ 82.654611] ? rcutorture_record_progress+0x10/0x10 120 [ 82.659602] ? is_bpf_text_address+0xa4/0x120 121 [ 82.664066] ? kernel_text_address+0x102/0x140 122 [ 82.668618] ? __kernel_text_address+0xd/0x40 123 [ 82.673084] ? unwind_get_return_address+0x61/0xa0 124 [ 82.677988] ? depot_save_stack+0x12c/0x490 125 [ 82.682284] ? check_noncircular+0x20/0x20 126 [ 82.686491] ? check_noncircular+0x20/0x20 127 [ 82.690702] ? save_stack+0x43/0xd0 128 [ 82.694302] ? kasan_kmalloc+0xad/0xe0 129 [ 82.698160] ? __kmalloc_node+0x47/0x70 130 [ 82.702111] ? xt_replace_table+0x23c/0x9d0 131 [ 82.706405] ? __do_replace+0x2e3/0xa50 132 [ 82.710350] ? do_ipt_set_ctl+0x40f/0x5f0 133 [ 82.714473] mutex_lock_nested+0x16/0x20 134 [ 82.718504] ? mutex_lock_nested+0x16/0x20 135 [ 82.722710] rtnl_lock+0x17/0x20 136 [ 82.726050] unregister_netdevice_notifier+0x91/0x4e0 137 [ 82.731212] ? clusterip_tg_destroy+0x36a/0x6e0 138 [ 82.735852] ? lock_downgrade+0x980/0x980 139 [ 82.739970] ? register_netdevice_notifier+0x860/0x860 140 [ 82.745218] ? __lock_is_held+0xb6/0x140 141 [ 82.749254] ? mark_held_locks+0xaf/0x100 142 [ 82.753381] ? do_raw_spin_trylock+0x190/0x190 143 [ 82.757944] ? __local_bh_enable_ip+0x121/0x230 144 [ 82.762586] ? trace_hardirqs_on_caller+0x421/0x5c0 145 [ 82.767574] ? clusterip_tg_destroy+0x350/0x6e0 146 [ 82.772215] ? trace_hardirqs_on+0xd/0x10 147 [ 82.776333] clusterip_tg_destroy+0x389/0x6e0 148 [ 82.780799] ? free_modinfo_version+0x70/0x70 149 [ 82.785264] ? clusterip_tg+0xa40/0xa40 150 [ 82.789207] ? cpumask_next+0x24/0x30 151 [ 82.792980] ? __lock_is_held+0xb6/0x140 152 [ 82.797015] ? clusterip_tg+0xa40/0xa40 153 [ 82.800967] cleanup_entry+0x218/0x350 154 [ 82.804823] ? cleanup_match+0x220/0x220 155 [ 82.808858] ? find_next_bit+0x27/0x30 156 [ 82.812721] __do_replace+0x79d/0xa50 157 [ 82.816495] ? compat_table_info+0x470/0x470 158 [ 82.820879] ? kasan_check_write+0x14/0x20 159 [ 82.825087] ? _copy_from_user+0x99/0x110 160 [ 82.829207] do_ipt_set_ctl+0x40f/0x5f0 161 [ 82.833153] ? translate_compat_table+0x1b90/0x1b90 162 [ 82.838141] ? __handle_mm_fault+0x3ce0/0x3ce0 163 [ 82.842701] ? mutex_unlock+0xd/0x10 164 [ 82.846389] ? nf_sockopt_find.constprop.0+0x1a7/0x220 165 [ 82.851640] nf_setsockopt+0x67/0xc0 166 [ 82.855329] ip_setsockopt+0x97/0xa0 167 [ 82.859017] tcp_setsockopt+0x82/0xd0 168 [ 82.862792] sock_common_setsockopt+0x95/0xd0 169 [ 82.867258] SyS_setsockopt+0x189/0x360 170 [ 82.871203] ? SyS_recv+0x40/0x40 171 [ 82.874629] ? entry_SYSCALL_64_fastpath+0x5/0xa0 172 [ 82.879442] ? trace_hardirqs_on_caller+0x421/0x5c0 173 [ 82.884436] ? trace_hardirqs_on_thunk+0x1a/0x1c 174 [ 82.889170] entry_SYSCALL_64_fastpath+0x29/0xa0 175 [ 82.893895] RIP: 0033:0x455d8a 176 [ 82.897058] RSP: 002b:0000000000a2f598 EFLAGS: 00000206 ORIG_RAX: 0000000000000036 177 [ 82.904739] RAX: ffffffffffffffda RBX: 00000000006f8a40 RCX: 0000000000455d8a 178 [ 82.911978] RDX: 0000000000000040 RSI: 0000000000000000 RDI: 0000000000000013 179 [ 82.919220] RBP: 00000000006f8a40 R08: 00000000000002d8 R09: 0000000000000001 180 [ 82.926461] R10: 00000000006f8e68 R11: 0000000000000206 R12: 0000000000000013 181 [ 82.933703] R13: 00000000006fb9e8 R14: 00000000000140a1 R15: 0000000000000001 182