[ 238.013708][ T10] [ 238.013806][ T10] ===================================================== [ 238.013975][ T10] WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected [ 238.014169][ T10] 6.9.0-rc1-virtme #1 Not tainted [ 238.014301][ T10] ----------------------------------------------------- [ 238.014462][ T10] kworker/u16:0/10 [HC0[0]:SC0[2]:HE1:SE0] is trying to acquire: [ 238.014658][ T10] ffff888001a70968 (&p->alloc_lock){+.+.}-{2:2}, at: __get_task_comm+0x27/0x70 [ 238.014901][ T10] [ 238.014901][ T10] and this task is already holding: [ 238.015097][ T10] ffff88803603f218 (&ul->lock){+.-.}-{2:2}, at: rt6_uncached_list_flush_dev+0x138/0x840 [ 238.015336][ T10] which would create a new lock dependency: [ 238.015496][ T10] (&ul->lock){+.-.}-{2:2} -> (&p->alloc_lock){+.+.}-{2:2} [ 238.015696][ T10] [ 238.015696][ T10] but this new dependency connects a SOFTIRQ-irq-safe lock: [ 238.015917][ T10] (&ul->lock){+.-.}-{2:2} [ 238.015921][ T10] [ 238.015921][ T10] ... which became SOFTIRQ-irq-safe at: [ 238.016241][ T10] __lock_acquire+0x797/0x1570 [ 238.016377][ T10] lock_acquire.part.0+0xeb/0x330 [ 238.016508][ T10] _raw_spin_lock_bh+0x38/0x50 [ 238.016643][ T10] rt6_uncached_list_del+0x77/0x200 [ 238.016774][ T10] ip6_dst_destroy+0x74/0x1e0 [ 238.016907][ T10] dst_destroy+0xbc/0x370 [ 238.017040][ T10] rcu_do_batch+0x3c0/0xfb0 [ 238.017181][ T10] rcu_core+0x2be/0x500 [ 238.017280][ T10] __do_softirq+0x1f8/0x5df [ 238.017411][ T10] irq_exit_rcu+0x97/0xc0 [ 238.017542][ T10] sysvec_apic_timer_interrupt+0x75/0x80 [ 238.017675][ T10] asm_sysvec_apic_timer_interrupt+0x1a/0x20 [ 238.017838][ T10] default_idle+0xf/0x20 [ 238.017936][ T10] default_idle_call+0x6d/0xb0 [ 238.018072][ T10] cpuidle_idle_call+0x1f4/0x280 [ 238.018205][ T10] do_idle+0xf9/0x160 [ 238.018304][ T10] cpu_startup_entry+0x54/0x60 [ 238.018434][ T10] start_secondary+0x21c/0x2b0 [ 238.018566][ T10] common_startup_64+0x12c/0x138 [ 238.018698][ T10] [ 238.018698][ T10] to a SOFTIRQ-irq-unsafe lock: [ 238.018857][ T10] (&p->alloc_lock){+.+.}-{2:2} [ 238.018861][ T10] [ 238.018861][ T10] ... which became SOFTIRQ-irq-unsafe at: [ 238.019187][ T10] ... [ 238.019189][ T10] __lock_acquire+0x797/0x1570 [ 238.019386][ T10] lock_acquire.part.0+0xeb/0x330 [ 238.019516][ T10] _raw_spin_lock+0x30/0x40 [ 238.019646][ T10] set_mems_allowed+0x1d/0x210 [ 238.019778][ T10] kernel_init_freeable+0x72/0x310 [ 238.019909][ T10] kernel_init+0x20/0x200 [ 238.020041][ T10] ret_from_fork+0x31/0x70 [ 238.020177][ T10] ret_from_fork_asm+0x1a/0x30 [ 238.020306][ T10] [ 238.020306][ T10] other info that might help us debug this: [ 238.020306][ T10] [ 238.020559][ T10] Possible interrupt unsafe locking scenario: [ 238.020559][ T10] [ 238.020751][ T10] CPU0 CPU1 [ 238.020881][ T10] ---- ---- [ 238.021010][ T10] lock(&p->alloc_lock); [ 238.021113][ T10] local_irq_disable(); [ 238.021275][ T10] lock(&ul->lock); [ 238.021438][ T10] lock(&p->alloc_lock); [ 238.021604][ T10] [ 238.021703][ T10] lock(&ul->lock); [ 238.021804][ T10] [ 238.021804][ T10] *** DEADLOCK *** [ 238.021804][ T10] [ 238.021994][ T10] 5 locks held by kworker/u16:0/10: [ 238.022127][ T10] #0: ffff88800190a948 ((wq_completion)netns){+.+.}-{0:0}, at: process_one_work+0xda6/0x1730 [ 238.022394][ T10] #1: ffffc900000afda0 (net_cleanup_work){+.+.}-{0:0}, at: process_one_work+0xde2/0x1730 [ 238.022624][ T10] #2: ffffffff8f39bc50 (pernet_ops_rwsem){++++}-{3:3}, at: cleanup_net+0xbc/0xb60 [ 238.022858][ T10] #3: ffffffff8f3b7208 (rtnl_mutex){+.+.}-{3:3}, at: default_device_exit_batch+0x81/0x2d0 [ 238.023123][ T10] #4: ffff88803603f218 (&ul->lock){+.-.}-{2:2}, at: rt6_uncached_list_flush_dev+0x138/0x840 [ 238.023390][ T10] [ 238.023390][ T10] the dependencies between SOFTIRQ-irq-safe lock and the holding lock: [ 238.023643][ T10] -> (&ul->lock){+.-.}-{2:2} { [ 238.023780][ T10] HARDIRQ-ON-W at: [ 238.023883][ T10] __lock_acquire+0x797/0x1570 [ 238.024052][ T10] lock_acquire.part.0+0xeb/0x330 [ 238.024220][ T10] _raw_spin_lock_bh+0x38/0x50 [ 238.024384][ T10] rt6_uncached_list_add+0x55/0x1b0 [ 238.024629][ T10] icmp6_dst_alloc+0x2c0/0x450 [ 238.024793][ T10] mld_sendpack+0x529/0xbc0 [ 238.024958][ T10] mld_ifc_work+0x32/0x1f0 [ 238.025200][ T10] process_one_work+0xe2c/0x1730 [ 238.025363][ T10] worker_thread+0x587/0xd30 [ 238.025531][ T10] kthread+0x28a/0x350 [ 238.025665][ T10] ret_from_fork+0x31/0x70 [ 238.025909][ T10] ret_from_fork_asm+0x1a/0x30 [ 238.026074][ T10] IN-SOFTIRQ-W at: [ 238.026173][ T10] __lock_acquire+0x797/0x1570 [ 238.026337][ T10] lock_acquire.part.0+0xeb/0x330 [ 238.026580][ T10] _raw_spin_lock_bh+0x38/0x50 [ 238.026747][ T10] rt6_uncached_list_del+0x77/0x200 [ 238.026911][ T10] ip6_dst_destroy+0x74/0x1e0 [ 238.027151][ T10] dst_destroy+0xbc/0x370 [ 238.027315][ T10] rcu_do_batch+0x3c0/0xfb0 [ 238.027478][ T10] rcu_core+0x2be/0x500 [ 238.027799][ T10] __do_softirq+0x1f8/0x5df [ 238.027968][ T10] irq_exit_rcu+0x97/0xc0 [ 238.028133][ T10] sysvec_apic_timer_interrupt+0x75/0x80 [ 238.028332][ T10] asm_sysvec_apic_timer_interrupt+0x1a/0x20 [ 238.028608][ T10] default_idle+0xf/0x20 [ 238.028773][ T10] default_idle_call+0x6d/0xb0 [ 238.028944][ T10] cpuidle_idle_call+0x1f4/0x280 [ 238.029193][ T10] do_idle+0xf9/0x160 [ 238.029329][ T10] cpu_startup_entry+0x54/0x60 [ 238.029493][ T10] start_secondary+0x21c/0x2b0 [ 238.029735][ T10] common_startup_64+0x12c/0x138 [ 238.029901][ T10] INITIAL USE at: [ 238.029999][ T10] __lock_acquire+0x797/0x1570 [ 238.030162][ T10] lock_acquire.part.0+0xeb/0x330 [ 238.030406][ T10] _raw_spin_lock_bh+0x38/0x50 [ 238.030572][ T10] rt6_uncached_list_add+0x55/0x1b0 [ 238.030736][ T10] icmp6_dst_alloc+0x2c0/0x450 [ 238.030901][ T10] mld_sendpack+0x529/0xbc0 [ 238.031145][ T10] mld_ifc_work+0x32/0x1f0 [ 238.031309][ T10] process_one_work+0xe2c/0x1730 [ 238.031474][ T10] worker_thread+0x587/0xd30 [ 238.031718][ T10] kthread+0x28a/0x350 [ 238.031850][ T10] ret_from_fork+0x31/0x70 [ 238.032014][ T10] ret_from_fork_asm+0x1a/0x30 [ 238.032178][ T10] } [ 238.032321][ T10] ... key at: [] __key.15+0x0/0x40 [ 238.032518][ T10] [ 238.032518][ T10] the dependencies between the lock to be acquired [ 238.032519][ T10] and SOFTIRQ-irq-unsafe lock: [ 238.032978][ T10] -> (&p->alloc_lock){+.+.}-{2:2} { [ 238.033115][ T10] HARDIRQ-ON-W at: [ 238.033217][ T10] __lock_acquire+0x797/0x1570 [ 238.033384][ T10] lock_acquire.part.0+0xeb/0x330 [ 238.033550][ T10] _raw_spin_lock+0x30/0x40 [ 238.033713][ T10] set_mems_allowed+0x1d/0x210 [ 238.033878][ T10] kernel_init_freeable+0x72/0x310 [ 238.034047][ T10] kernel_init+0x20/0x200 [ 238.034212][ T10] ret_from_fork+0x31/0x70 [ 238.034379][ T10] ret_from_fork_asm+0x1a/0x30 [ 238.034544][ T10] SOFTIRQ-ON-W at: [ 238.034644][ T10] __lock_acquire+0x797/0x1570 [ 238.034809][ T10] lock_acquire.part.0+0xeb/0x330 [ 238.034975][ T10] _raw_spin_lock+0x30/0x40 [ 238.035143][ T10] set_mems_allowed+0x1d/0x210 [ 238.035386][ T10] kernel_init_freeable+0x72/0x310 [ 238.035550][ T10] kernel_init+0x20/0x200 [ 238.035714][ T10] ret_from_fork+0x31/0x70 [ 238.035982][ T10] ret_from_fork_asm+0x1a/0x30 [ 238.036147][ T10] INITIAL USE at: [ 238.036246][ T10] __lock_acquire+0x797/0x1570 [ 238.036412][ T10] lock_acquire.part.0+0xeb/0x330 [ 238.036576][ T10] _raw_spin_lock+0x30/0x40 [ 238.036739][ T10] set_mems_allowed+0x1d/0x210 [ 238.036904][ T10] kernel_init_freeable+0x72/0x310 [ 238.037069][ T10] kernel_init+0x20/0x200 [ 238.037233][ T10] ret_from_fork+0x31/0x70 [ 238.037399][ T10] ret_from_fork_asm+0x1a/0x30 [ 238.037563][ T10] } [ 238.037711][ T10] ... key at: [] __key.388+0x0/0x40 [ 238.037907][ T10] ... acquired at: [ 238.038006][ T10] check_prev_add+0x194/0xce0 [ 238.038140][ T10] validate_chain+0x71d/0x9b0 [ 238.038348][ T10] __lock_acquire+0xaf0/0x1570 [ 238.038480][ T10] lock_acquire.part.0+0xeb/0x330 [ 238.038614][ T10] _raw_spin_lock+0x30/0x40 [ 238.038746][ T10] __get_task_comm+0x27/0x70 [ 238.038881][ T10] ref_tracker_alloc+0x2ee/0x490 [ 238.039099][ T10] rt6_uncached_list_flush_dev+0x494/0x840 [ 238.039264][ T10] rt6_disable_ip+0xd9/0x140 [ 238.039397][ T10] addrconf_ifdown.isra.0+0x103/0x1560 [ 238.039530][ T10] addrconf_notify+0xd1/0xd60 [ 238.039736][ T10] notifier_call_chain+0xcd/0x150 [ 238.039871][ T10] dev_close_many+0x2d8/0x650 [ 238.040005][ T10] unregister_netdevice_many_notify+0x3d5/0x1190 [ 238.040168][ T10] default_device_exit_batch+0x234/0x2d0 [ 238.040407][ T10] cleanup_net+0x4f3/0xb60 [ 238.040538][ T10] process_one_work+0xe2c/0x1730 [ 238.040669][ T10] worker_thread+0x587/0xd30 [ 238.040800][ T10] kthread+0x28a/0x350 [ 238.041012][ T10] ret_from_fork+0x31/0x70 [ 238.041147][ T10] ret_from_fork_asm+0x1a/0x30 [ 238.041280][ T10] [ 238.041347][ T10] [ 238.041347][ T10] stack backtrace: [ 238.041509][ T10] CPU: 1 PID: 10 Comm: kworker/u16:0 Not tainted 6.9.0-rc1-virtme #1 [ 238.041706][ T10] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 [ 238.041996][ T10] Workqueue: netns cleanup_net [ 238.042132][ T10] Call Trace: [ 238.042241][ T10] [ 238.042311][ T10] dump_stack_lvl+0x82/0xd0 [ 238.042451][ T10] print_bad_irq_dependency+0x957/0xd40 [ 238.042585][ T10] ? __pfx_print_bad_irq_dependency+0x10/0x10 [ 238.042750][ T10] ? __pfx_usage_skip+0x10/0x10 [ 238.042881][ T10] ? __bfs+0x246/0x650 [ 238.042981][ T10] ? __pfx_usage_match+0x10/0x10 [ 238.043112][ T10] check_irq_usage+0x596/0x850 [ 238.043321][ T10] ? arch_stack_walk+0x8c/0xf0 [ 238.043466][ T10] ? __pfx_check_irq_usage+0x10/0x10 [ 238.043610][ T10] ? __bfs+0x246/0x650 [ 238.043719][ T10] ? __pfx_hlock_conflict+0x10/0x10 [ 238.043864][ T10] ? check_path.constprop.0+0x24/0x50 [ 238.044083][ T10] ? check_noncircular+0x14c/0x3e0 [ 238.044229][ T10] ? __pfx_check_noncircular+0x10/0x10 [ 238.044376][ T10] ? check_prev_add+0x194/0xce0 [ 238.044521][ T10] check_prev_add+0x194/0xce0 [ 238.044747][ T10] ? validate_chain+0x130/0x9b0 [ 238.044892][ T10] validate_chain+0x71d/0x9b0 [ 238.045038][ T10] ? mark_lock+0x38/0x3e0 [ 238.045149][ T10] ? __pfx_validate_chain+0x10/0x10 [ 238.045370][ T10] ? hlock_class+0x4e/0x130 [ 238.045515][ T10] ? mark_lock+0x38/0x3e0 [ 238.045628][ T10] __lock_acquire+0xaf0/0x1570 [ 238.045775][ T10] lock_acquire.part.0+0xeb/0x330 [ 238.045919][ T10] ? __get_task_comm+0x27/0x70 [ 238.046141][ T10] ? mark_lock+0x38/0x3e0 [ 238.046241][ T10] ? __pfx_lock_acquire.part.0+0x10/0x10 [ 238.046374][ T10] ? trace_lock_acquire+0x135/0x1c0 [ 238.046504][ T10] ? __get_task_comm+0x27/0x70 [ 238.046710][ T10] ? lock_acquire+0x32/0xc0 [ 238.046840][ T10] ? __get_task_comm+0x27/0x70 [ 238.046972][ T10] _raw_spin_lock+0x30/0x40 [ 238.047102][ T10] ? __get_task_comm+0x27/0x70 [ 238.047237][ T10] __get_task_comm+0x27/0x70 [ 238.047442][ T10] ref_tracker_alloc+0x2ee/0x490 [ 238.047574][ T10] ? __pfx_ref_tracker_alloc+0x10/0x10 [ 238.047705][ T10] ? __lock_release+0x103/0x460 [ 238.047836][ T10] ? rt6_uncached_list_flush_dev+0x494/0x840 [ 238.048150][ T10] ? rt6_disable_ip+0xd9/0x140 [ 238.048282][ T10] ? addrconf_ifdown.isra.0+0x103/0x1560 [ 238.048413][ T10] ? addrconf_notify+0xd1/0xd60 [ 238.048544][ T10] ? notifier_call_chain+0xcd/0x150 [ 238.048753][ T10] ? dev_close_many+0x2d8/0x650 [ 238.048885][ T10] ? unregister_netdevice_many_notify+0x3d5/0x1190 [ 238.049055][ T10] ? default_device_exit_batch+0x234/0x2d0 [ 238.049219][ T10] ? cleanup_net+0x4f3/0xb60 [ 238.049425][ T10] ? process_one_work+0xe2c/0x1730 [ 238.049558][ T10] ? worker_thread+0x587/0xd30 [ 238.049693][ T10] ? kthread+0x28a/0x350 [ 238.049796][ T10] ? ret_from_fork+0x31/0x70 [ 238.050005][ T10] ? ret_from_fork_asm+0x1a/0x30 [ 238.050137][ T10] ? in6_dev_get+0xcc/0x210 [ 238.050270][ T10] rt6_uncached_list_flush_dev+0x494/0x840 [ 238.050435][ T10] rt6_disable_ip+0xd9/0x140 [ 238.050643][ T10] ? __pfx_rt6_disable_ip+0x10/0x10 [ 238.050775][ T10] ? mark_lock+0x38/0x3e0 [ 238.050876][ T10] addrconf_ifdown.isra.0+0x103/0x1560 [ 238.051010][ T10] ? __try_to_del_timer_sync+0xe7/0x140 [ 238.051147][ T10] ? __pfx_addrconf_ifdown.isra.0+0x10/0x10 [ 238.051392][ T10] addrconf_notify+0xd1/0xd60 [ 238.051524][ T10] notifier_call_chain+0xcd/0x150 [ 238.051655][ T10] dev_close_many+0x2d8/0x650 [ 238.051787][ T10] ? __pfx_dev_close_many+0x10/0x10 [ 238.052023][ T10] ? default_device_exit_batch+0x81/0x2d0 [ 238.052154][ T10] ? trace_contention_end+0xdc/0x140 [ 238.052290][ T10] unregister_netdevice_many_notify+0x3d5/0x1190 [ 238.052454][ T10] ? mutex_is_locked+0x17/0x50 [ 238.052585][ T10] ? __pfx_unregister_netdevice_many_notify+0x10/0x10 [ 238.052747][ T10] ? __pfx_unregister_netdevice_queue+0x10/0x10 [ 238.052911][ T10] default_device_exit_batch+0x234/0x2d0 [ 238.053042][ T10] ? __pfx_default_device_exit_batch+0x10/0x10 [ 238.053204][ T10] ? ops_exit_list+0xb4/0x170 [ 238.053336][ T10] cleanup_net+0x4f3/0xb60 [ 238.053470][ T10] ? __pfx_lock_acquire.part.0+0x10/0x10 [ 238.053602][ T10] ? __pfx_cleanup_net+0x10/0x10 [ 238.053732][ T10] ? trace_lock_acquire+0x135/0x1c0 [ 238.053863][ T10] ? process_one_work+0xde2/0x1730 [ 238.053993][ T10] ? lock_acquire+0x32/0xc0 [ 238.054125][ T10] ? process_one_work+0xde2/0x1730 [ 238.054333][ T10] process_one_work+0xe2c/0x1730 [ 238.054465][ T10] ? __pfx___lock_release+0x10/0x10 [ 238.054599][ T10] ? __pfx_process_one_work+0x10/0x10 [ 238.054731][ T10] ? assign_work+0x16c/0x240 [ 238.054963][ T10] worker_thread+0x587/0xd30 [ 238.055097][ T10] ? __pfx_worker_thread+0x10/0x10 [ 238.055228][ T10] kthread+0x28a/0x350 [ 238.055326][ T10] ? __pfx_kthread+0x10/0x10 [ 238.055457][ T10] ret_from_fork+0x31/0x70 [ 238.055588][ T10] ? __pfx_kthread+0x10/0x10 [ 238.055721][ T10] ret_from_fork_asm+0x1a/0x30 [ 238.055855][ T10]