| TITLE: possible deadlock in rtnl_lock |
| |
| [ 577.935684] ============================================ |
| [ 577.936463] WARNING: possible recursive locking detected |
| [ 577.937224] 4.16.0+ #174 Not tainted |
| [ 577.937772] -------------------------------------------- |
| [ 577.938510] syz-executor0/14230 is trying to acquire lock: |
| [ 577.939264] 0000000097f06d5d (rtnl_mutex){+.+.}, at: rtnl_lock+0x17/0x20 |
| [ 577.940235] |
| [ 577.940235] but task is already holding lock: |
| [ 577.941088] 0000000097f06d5d (rtnl_mutex){+.+.}, at: rtnl_lock+0x17/0x20 |
| [ 577.942073] |
| [ 577.942073] other info that might help us debug this: |
| [ 577.942994] Possible unsafe locking scenario: |
| [ 577.942994] |
| [ 577.943874] CPU0 |
| [ 577.944295] ---- |
| [ 577.944644] lock(rtnl_mutex); |
| [ 577.945098] lock(rtnl_mutex); |
| [ 577.945597] |
| [ 577.945597] *** DEADLOCK *** |
| [ 577.945597] |
| [ 577.946394] May be due to missing lock nesting notation |
| [ 577.946394] |
| [ 577.947342] 2 locks held by syz-executor0/14230: |
| [ 577.947997] #0: 0000000097f06d5d (rtnl_mutex){+.+.}, at: rtnl_lock+0x17/0x20 |
| [ 577.950288] #1: 000000000e50f4d1 (ipvs->sync_mutex){+.+.}, at: do_ip_vs_set_ctl+0x5a5/0x1d70 |
| [ 577.952049] |
| [ 577.952049] stack backtrace: |
| [ 577.952964] CPU: 2 PID: 14230 Comm: syz-executor0 Not tainted 4.16.0+ #174 |
| [ 577.954353] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014 |
| [ 577.956048] Call Trace: |
| [ 577.956586] dump_stack+0x1b9/0x294 |
| [ 577.957337] ? dump_stack_print_info.cold.2+0x52/0x52 |
| [ 577.958380] ? print_lock+0xd1/0xd6 |
| [ 577.959129] ? vprintk_func+0x81/0xe7 |
| [ 577.959904] __lock_acquire.cold.61+0x18c/0x55b |
| [ 577.960848] ? debug_check_no_locks_freed+0x310/0x310 |
| [ 577.961866] ? account_kernel_stack+0x2bd/0x410 |
| [ 577.962762] ? trace_hardirqs_on+0xd/0x10 |
| [ 577.963551] ? put_task_stack+0x188/0x2c0 |
| [ 577.964320] ? __lock_acquire+0x7f5/0x5140 |
| [ 577.965128] ? copy_overflow+0x20/0x20 |
| [ 577.965885] ? __switch_to_asm+0x34/0x70 |
| [ 577.966662] ? __switch_to_asm+0x40/0x70 |
| [ 577.967483] ? __switch_to_asm+0x34/0x70 |
| [ 577.968244] ? __switch_to_asm+0x40/0x70 |
| [ 577.969005] ? __schedule+0x809/0x1e30 |
| [ 577.969767] ? __sched_text_start+0x8/0x8 |
| [ 577.971372] ? _raw_spin_unlock_irq+0x27/0x70 |
| [ 577.972266] ? trace_hardirqs_on_caller+0x421/0x5c0 |
| [ 577.973250] ? graph_lock+0x170/0x170 |
| [ 577.973994] ? __switch_to_asm+0x40/0x70 |
| [ 577.974794] ? copy_overflow+0x20/0x20 |
| [ 577.975554] lock_acquire+0x1dc/0x520 |
| [ 577.976291] ? rtnl_lock+0x17/0x20 |
| [ 577.976986] ? lock_release+0xa10/0xa10 |
| [ 577.977758] ? rcu_note_context_switch+0x710/0x710 |
| [ 577.978716] ? __might_sleep+0x95/0x190 |
| [ 577.979505] ? rtnl_lock+0x17/0x20 |
| [ 577.980183] __mutex_lock+0x16d/0x17f0 |
| [ 577.980919] ? rtnl_lock+0x17/0x20 |
| [ 577.981596] ? rtnl_lock+0x17/0x20 |
| [ 577.982264] ? mutex_trylock+0x2a0/0x2a0 |
| [ 577.983011] ? mark_held_locks+0xc9/0x160 |
| [ 577.983809] ? do_raw_spin_trylock+0x1b0/0x1b0 |
| [ 577.984685] ? _raw_spin_unlock_irq+0x27/0x70 |
| [ 577.985563] ? trace_hardirqs_on_caller+0x421/0x5c0 |
| [ 577.986557] ? trace_hardirqs_on+0xd/0x10 |
| [ 577.987410] ? _raw_spin_unlock_irq+0x27/0x70 |
| [ 577.988328] ? wait_for_completion_killable+0x56c/0x960 |
| [ 577.989355] ? wait_for_completion_interruptible_timeout+0x960/0x960 |
| [ 577.990576] ? lock_downgrade+0x8e0/0x8e0 |
| [ 577.992065] ? kasan_check_read+0x11/0x20 |
| [ 577.992855] ? do_raw_spin_unlock+0x9e/0x2e0 |
| [ 577.993695] ? do_raw_spin_trylock+0x1b0/0x1b0 |
| [ 577.994605] ? wake_up_q+0x100/0x100 |
| [ 577.995391] ? kasan_check_write+0x14/0x20 |
| [ 577.996268] ? do_raw_spin_lock+0xc1/0x200 |
| [ 577.997144] ? __sanitizer_cov_trace_const_cmp4+0x16/0x20 |
| [ 577.998261] ? __kthread_create_on_node+0x34f/0x4c0 |
| [ 577.999272] ? __kthread_parkme+0x280/0x280 |
| [ 578.000194] ? lock_downgrade+0x8e0/0x8e0 |
| [ 578.001014] ? lock_downgrade+0x8e0/0x8e0 |
| [ 578.001825] ? __lock_is_held+0xb5/0x140 |
| [ 578.002625] mutex_lock_nested+0x16/0x20 |
| [ 578.003413] ? mutex_lock_nested+0x16/0x20 |
| [ 578.004237] rtnl_lock+0x17/0x20 |
| [ 578.004899] ip_mc_drop_socket+0x8f/0x270 |
| [ 578.005709] inet_release+0x4e/0x1f0 |
| [ 578.006438] sock_release+0x96/0x1b0 |
| [ 578.007148] start_sync_thread+0xdc3/0x2d40 |
| [ 578.008006] ? ip_vs_process_message+0xa0a/0xa0a |
| [ 578.008938] ? ip_vs_sync_conn+0x33a0/0x33a0 |
| [ 578.009791] ? find_held_lock+0x36/0x1c0 |
| [ 578.010656] ? graph_lock+0x170/0x170 |
| [ 578.011442] ? lock_downgrade+0x8e0/0x8e0 |
| [ 578.012382] ? lock_downgrade+0x8e0/0x8e0 |
| [ 578.013752] ? find_held_lock+0x36/0x1c0 |
| [ 578.014509] ? lock_downgrade+0x8e0/0x8e0 |
| [ 578.015282] ? lock_release+0xa10/0xa10 |
| [ 578.016066] ? module_unload_free+0x5b0/0x5b0 |
| [ 578.016971] ? __might_sleep+0x95/0x190 |
| [ 578.017765] do_ip_vs_set_ctl+0x5df/0x1d70 |
| [ 578.018609] ? mutex_trylock+0x2a0/0x2a0 |
| [ 578.019429] ? __sys_socket+0x16f/0x250 |
| [ 578.020221] ? SyS_socket+0x24/0x30 |
| [ 578.020945] ? ip_vs_genl_set_cmd+0xe80/0xe80 |
| [ 578.021837] ? find_held_lock+0x36/0x1c0 |
| [ 578.022657] ? lock_downgrade+0x8e0/0x8e0 |
| [ 578.023496] ? kasan_check_read+0x11/0x20 |
| [ 578.024336] ? rcu_is_watching+0x85/0x140 |
| [ 578.025168] ? rcu_bh_force_quiescent_state+0x20/0x20 |
| [ 578.026213] ? kasan_check_write+0x14/0x20 |
| [ 578.027063] ? __mutex_unlock_slowpath+0x180/0x8a0 |
| [ 578.028054] ? wait_for_completion+0x870/0x870 |
| [ 578.028979] ? module_unload_free+0x5b0/0x5b0 |
| [ 578.029848] ? kasan_check_read+0x11/0x20 |
| [ 578.030652] ? __lock_is_held+0xb5/0x140 |
| [ 578.031453] ? rcu_bh_force_quiescent_state+0x20/0x20 |
| [ 578.032447] nf_setsockopt+0x7d/0xd0 |
| [ 578.033180] ? ip_vs_genl_set_cmd+0xe80/0xe80 |
| [ 578.034631] ? nf_setsockopt+0x7d/0xd0 |
| [ 578.035422] ip_setsockopt+0xd8/0xf0 |
| [ 578.036176] udp_setsockopt+0x62/0xa0 |
| [ 578.036947] sock_common_setsockopt+0x9a/0xe0 |
| [ 578.037843] __sys_setsockopt+0x1bd/0x390 |
| [ 578.038681] ? kernel_accept+0x310/0x310 |
| [ 578.039505] ? do_futex+0x27d0/0x27d0 |
| [ 578.040275] ? __sanitizer_cov_trace_const_cmp1+0x1a/0x20 |
| [ 578.041375] ? fput+0x130/0x1a0 |
| [ 578.042036] SyS_setsockopt+0x34/0x50 |
| [ 578.042795] ? SyS_recv+0x40/0x40 |
| [ 578.043501] do_syscall_64+0x29e/0x9d0 |
| [ 578.044286] ? _raw_spin_unlock_irq+0x27/0x70 |
| [ 578.045181] ? finish_task_switch+0x1ca/0x810 |
| [ 578.046084] ? syscall_return_slowpath+0x5c0/0x5c0 |
| [ 578.047070] ? syscall_return_slowpath+0x30f/0x5c0 |
| [ 578.048066] ? entry_SYSCALL_64_after_hwframe+0x52/0xb7 |
| [ 578.049144] ? trace_hardirqs_off_thunk+0x1a/0x1c |
| [ 578.050127] entry_SYSCALL_64_after_hwframe+0x42/0xb7 |
| [ 578.051158] RIP: 0033:0x454ce9 |
| [ 578.051802] RSP: 002b:00007f3faeda1c68 EFLAGS: 00000246 ORIG_RAX: 0000000000000036 |
| [ 578.053296] RAX: ffffffffffffffda RBX: 000000000070bea0 RCX: 0000000000454ce9 |
| [ 578.054738] RDX: 000000000000048b RSI: 0000000000000000 RDI: 0000000000000014 |
| [ 578.057343] RBP: 00000000ffffffff R08: 0000000000000018 R09: 0000000000000000 |
| [ 578.058691] R10: 0000000020000040 R11: 0000000000000246 R12: 00007f3faeda26d4 |
| [ 578.060044] R13: 0000000000000520 R14: 00000000006d90a0 R15: 00000000006e0ba0 |