[ 50.803275][ T10] [ 50.803444][ T10] ===================================================== [ 50.803633][ T10] WARNING: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected [ 50.803849][ T10] 6.9.0-rc1-virtme #1 Not tainted [ 50.803995][ T10] ----------------------------------------------------- [ 50.804177][ T10] kworker/u16:0/10 [HC0[0]:SC0[2]:HE1:SE0] is trying to acquire: [ 50.804393][ T10] ffff888001a70968 (&p->alloc_lock){+.+.}-{2:2}, at: __get_task_comm+0x27/0x70 [ 50.804658][ T10] [ 50.804658][ T10] and this task is already holding: [ 50.804874][ T10] ffff88802f7bf218 (&ul->lock){+.-.}-{2:2}, at: rt6_uncached_list_flush_dev+0x138/0x840 [ 50.805138][ T10] which would create a new lock dependency: [ 50.805320][ T10] (&ul->lock){+.-.}-{2:2} -> (&p->alloc_lock){+.+.}-{2:2} [ 50.805547][ T10] [ 50.805547][ T10] but this new dependency connects a SOFTIRQ-irq-safe lock: [ 50.805798][ T10] (&ul->lock){+.-.}-{2:2} [ 50.805802][ T10] [ 50.805802][ T10] ... which became SOFTIRQ-irq-safe at: [ 50.806152][ T10] __lock_acquire+0x797/0x1570 [ 50.806303][ T10] lock_acquire.part.0+0xeb/0x330 [ 50.806450][ T10] _raw_spin_lock_bh+0x38/0x50 [ 50.806597][ T10] rt6_uncached_list_del+0x77/0x200 [ 50.806744][ T10] ip6_dst_destroy+0x74/0x1e0 [ 50.806893][ T10] dst_destroy+0xbc/0x370 [ 50.807039][ T10] rcu_do_batch+0x3c0/0xfb0 [ 50.807181][ T10] rcu_core+0x2be/0x500 [ 50.807291][ T10] __do_softirq+0x1f8/0x5df [ 50.807435][ T10] irq_exit_rcu+0x97/0xc0 [ 50.807581][ T10] sysvec_apic_timer_interrupt+0x75/0x80 [ 50.807724][ T10] asm_sysvec_apic_timer_interrupt+0x1a/0x20 [ 50.807902][ T10] default_idle+0xf/0x20 [ 50.808011][ T10] default_idle_call+0x6d/0xb0 [ 50.808154][ T10] cpuidle_idle_call+0x1f4/0x280 [ 50.808297][ T10] do_idle+0xf9/0x160 [ 50.808407][ T10] cpu_startup_entry+0x54/0x60 [ 50.808555][ T10] rest_init+0x14f/0x260 [ 50.808663][ T10] start_kernel+0x318/0x3d0 [ 50.808809][ T10] x86_64_start_reservations+0x18/0x30 [ 50.808952][ T10] x86_64_start_kernel+0xba/0x110 [ 50.809095][ T10] common_startup_64+0x12c/0x138 [ 50.809240][ T10] [ 50.809240][ T10] to a SOFTIRQ-irq-unsafe lock: [ 50.809419][ T10] (&p->alloc_lock){+.+.}-{2:2} [ 50.809423][ T10] [ 50.809423][ T10] ... which became SOFTIRQ-irq-unsafe at: [ 50.809774][ T10] ... [ 50.809775][ T10] __lock_acquire+0x797/0x1570 [ 50.809994][ T10] lock_acquire.part.0+0xeb/0x330 [ 50.810138][ T10] _raw_spin_lock+0x30/0x40 [ 50.810281][ T10] set_mems_allowed+0x1d/0x210 [ 50.810427][ T10] kernel_init_freeable+0x72/0x310 [ 50.810571][ T10] kernel_init+0x20/0x200 [ 50.810715][ T10] ret_from_fork+0x31/0x70 [ 50.810858][ T10] ret_from_fork_asm+0x1a/0x30 [ 50.811001][ T10] [ 50.811001][ T10] other info that might help us debug this: [ 50.811001][ T10] [ 50.811281][ T10] Possible interrupt unsafe locking scenario: [ 50.811281][ T10] [ 50.811496][ T10] CPU0 CPU1 [ 50.811639][ T10] ---- ---- [ 50.811781][ T10] lock(&p->alloc_lock); [ 50.811901][ T10] local_irq_disable(); [ 50.812082][ T10] lock(&ul->lock); [ 50.812263][ T10] lock(&p->alloc_lock); [ 50.812446][ T10] [ 50.812560][ T10] lock(&ul->lock); [ 50.812675][ T10] [ 50.812675][ T10] *** DEADLOCK *** [ 50.812675][ T10] [ 50.812882][ T10] 5 locks held by kworker/u16:0/10: [ 50.813024][ T10] #0: ffff88800190a948 ((wq_completion)netns){+.+.}-{0:0}, at: process_one_work+0xda6/0x1730 [ 50.813325][ T10] #1: ffffc900000afda0 (net_cleanup_work){+.+.}-{0:0}, at: process_one_work+0xde2/0x1730 [ 50.813581][ T10] #2: ffffffffb459bc50 (pernet_ops_rwsem){++++}-{3:3}, at: cleanup_net+0xbc/0xb60 [ 50.813844][ T10] #3: ffffffffb45b7208 (rtnl_mutex){+.+.}-{3:3}, at: default_device_exit_batch+0x81/0x2d0 [ 50.814139][ T10] #4: ffff88802f7bf218 (&ul->lock){+.-.}-{2:2}, at: rt6_uncached_list_flush_dev+0x138/0x840 [ 50.814433][ T10] [ 50.814433][ T10] the dependencies between SOFTIRQ-irq-safe lock and the holding lock: [ 50.814717][ T10] -> (&ul->lock){+.-.}-{2:2} { [ 50.814870][ T10] HARDIRQ-ON-W at: [ 50.814983][ T10] __lock_acquire+0x797/0x1570 [ 50.815166][ T10] lock_acquire.part.0+0xeb/0x330 [ 50.815357][ T10] _raw_spin_lock_bh+0x38/0x50 [ 50.815544][ T10] rt6_uncached_list_add+0x55/0x1b0 [ 50.815731][ T10] icmp6_dst_alloc+0x2c0/0x450 [ 50.815917][ T10] mld_sendpack+0x529/0xbc0 [ 50.816101][ T10] mld_ifc_work+0x32/0x1f0 [ 50.816373][ T10] process_one_work+0xe2c/0x1730 [ 50.816554][ T10] worker_thread+0x587/0xd30 [ 50.816733][ T10] kthread+0x28a/0x350 [ 50.816886][ T10] ret_from_fork+0x31/0x70 [ 50.817145][ T10] ret_from_fork_asm+0x1a/0x30 [ 50.817409][ T10] IN-SOFTIRQ-W at: [ 50.817519][ T10] __lock_acquire+0x797/0x1570 [ 50.817702][ T10] lock_acquire.part.0+0xeb/0x330 [ 50.817888][ T10] _raw_spin_lock_bh+0x38/0x50 [ 50.818075][ T10] rt6_uncached_list_del+0x77/0x200 [ 50.818341][ T10] ip6_dst_destroy+0x74/0x1e0 [ 50.818525][ T10] dst_destroy+0xbc/0x370 [ 50.818711][ T10] rcu_do_batch+0x3c0/0xfb0 [ 50.818975][ T10] rcu_core+0x2be/0x500 [ 50.819170][ T10] __do_softirq+0x1f8/0x5df [ 50.819434][ T10] irq_exit_rcu+0x97/0xc0 [ 50.819615][ T10] sysvec_apic_timer_interrupt+0x75/0x80 [ 50.819915][ T10] asm_sysvec_apic_timer_interrupt+0x1a/0x20 [ 50.820214][ T10] default_idle+0xf/0x20 [ 50.820399][ T10] default_idle_call+0x6d/0xb0 [ 50.820663][ T10] cpuidle_idle_call+0x1f4/0x280 [ 50.820848][ T10] do_idle+0xf9/0x160 [ 50.820996][ T10] cpu_startup_entry+0x54/0x60 [ 50.821173][ T10] rest_init+0x14f/0x260 [ 50.821369][ T10] start_kernel+0x318/0x3d0 [ 50.821737][ T10] x86_64_start_reservations+0x18/0x30 [ 50.821931][ T10] x86_64_start_kernel+0xba/0x110 [ 50.822115][ T10] common_startup_64+0x12c/0x138 [ 50.822301][ T10] INITIAL USE at: [ 50.822413][ T10] __lock_acquire+0x797/0x1570 [ 50.822677][ T10] lock_acquire.part.0+0xeb/0x330 [ 50.822862][ T10] _raw_spin_lock_bh+0x38/0x50 [ 50.823046][ T10] rt6_uncached_list_add+0x55/0x1b0 [ 50.823232][ T10] icmp6_dst_alloc+0x2c0/0x450 [ 50.823417][ T10] mld_sendpack+0x529/0xbc0 [ 50.823682][ T10] mld_ifc_work+0x32/0x1f0 [ 50.823858][ T10] process_one_work+0xe2c/0x1730 [ 50.824039][ T10] worker_thread+0x587/0xd30 [ 50.824223][ T10] kthread+0x28a/0x350 [ 50.824448][ T10] ret_from_fork+0x31/0x70 [ 50.824627][ T10] ret_from_fork_asm+0x1a/0x30 [ 50.824807][ T10] } [ 50.824880][ T10] ... key at: [] __key.15+0x0/0x40 [ 50.825170][ T10] [ 50.825170][ T10] the dependencies between the lock to be acquired [ 50.825172][ T10] and SOFTIRQ-irq-unsafe lock: [ 50.825557][ T10] -> (&p->alloc_lock){+.+.}-{2:2} { [ 50.825821][ T10] HARDIRQ-ON-W at: [ 50.825931][ T10] __lock_acquire+0x797/0x1570 [ 50.826114][ T10] lock_acquire.part.0+0xeb/0x330 [ 50.826294][ T10] _raw_spin_lock+0x30/0x40 [ 50.826477][ T10] set_mems_allowed+0x1d/0x210 [ 50.826660][ T10] kernel_init_freeable+0x72/0x310 [ 50.826843][ T10] kernel_init+0x20/0x200 [ 50.827029][ T10] ret_from_fork+0x31/0x70 [ 50.827209][ T10] ret_from_fork_asm+0x1a/0x30 [ 50.827391][ T10] SOFTIRQ-ON-W at: [ 50.827501][ T10] __lock_acquire+0x797/0x1570 [ 50.827684][ T10] lock_acquire.part.0+0xeb/0x330 [ 50.827868][ T10] _raw_spin_lock+0x30/0x40 [ 50.828053][ T10] set_mems_allowed+0x1d/0x210 [ 50.828314][ T10] kernel_init_freeable+0x72/0x310 [ 50.828497][ T10] kernel_init+0x20/0x200 [ 50.828682][ T10] ret_from_fork+0x31/0x70 [ 50.828950][ T10] ret_from_fork_asm+0x1a/0x30 [ 50.829139][ T10] INITIAL USE at: [ 50.829248][ T10] __lock_acquire+0x797/0x1570 [ 50.829434][ T10] lock_acquire.part.0+0xeb/0x330 [ 50.829621][ T10] _raw_spin_lock+0x30/0x40 [ 50.829901][ T10] set_mems_allowed+0x1d/0x210 [ 50.830085][ T10] kernel_init_freeable+0x72/0x310 [ 50.830265][ T10] kernel_init+0x20/0x200 [ 50.830449][ T10] ret_from_fork+0x31/0x70 [ 50.830641][ T10] ret_from_fork_asm+0x1a/0x30 [ 50.830906][ T10] } [ 50.830988][ T10] ... key at: [] __key.388+0x0/0x40 [ 50.831209][ T10] ... acquired at: [ 50.831320][ T10] check_prev_add+0x194/0xce0 [ 50.831465][ T10] validate_chain+0x71d/0x9b0 [ 50.831725][ T10] __lock_acquire+0xaf0/0x1570 [ 50.831879][ T10] lock_acquire.part.0+0xeb/0x330 [ 50.832033][ T10] _raw_spin_lock+0x30/0x40 [ 50.832181][ T10] __get_task_comm+0x27/0x70 [ 50.832325][ T10] ref_tracker_alloc+0x2ee/0x490 [ 50.832472][ T10] rt6_uncached_list_flush_dev+0x494/0x840 [ 50.832653][ T10] rt6_disable_ip+0xd9/0x140 [ 50.832798][ T10] addrconf_ifdown.isra.0+0x103/0x1560 [ 50.832945][ T10] addrconf_notify+0xd1/0xd60 [ 50.833179][ T10] notifier_call_chain+0xcd/0x150 [ 50.833325][ T10] dev_close_many+0x2d8/0x650 [ 50.833468][ T10] unregister_netdevice_many_notify+0x3d5/0x1190 [ 50.833648][ T10] default_device_exit_batch+0x234/0x2d0 [ 50.833913][ T10] cleanup_net+0x4f3/0xb60 [ 50.834054][ T10] process_one_work+0xe2c/0x1730 [ 50.834205][ T10] worker_thread+0x587/0xd30 [ 50.834365][ T10] kthread+0x28a/0x350 [ 50.834476][ T10] ret_from_fork+0x31/0x70 [ 50.834697][ T10] ret_from_fork_asm+0x1a/0x30 [ 50.834841][ T10] [ 50.834921][ T10] [ 50.834921][ T10] stack backtrace: [ 50.835173][ T10] CPU: 0 PID: 10 Comm: kworker/u16:0 Not tainted 6.9.0-rc1-virtme #1 [ 50.835391][ T10] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014 [ 50.835719][ T10] Workqueue: netns cleanup_net [ 50.835951][ T10] Call Trace: [ 50.836070][ T10] [ 50.836146][ T10] dump_stack_lvl+0x82/0xd0 [ 50.836298][ T10] print_bad_irq_dependency+0x957/0xd40 [ 50.836445][ T10] ? __pfx_print_bad_irq_dependency+0x10/0x10 [ 50.836741][ T10] ? __pfx_usage_skip+0x10/0x10 [ 50.836890][ T10] ? __bfs+0x246/0x650 [ 50.837004][ T10] ? __pfx_usage_match+0x10/0x10 [ 50.837154][ T10] check_irq_usage+0x596/0x850 [ 50.837309][ T10] ? arch_stack_walk+0x8c/0xf0 [ 50.837459][ T10] ? __pfx_check_irq_usage+0x10/0x10 [ 50.837605][ T10] ? __bfs+0x246/0x650 [ 50.837716][ T10] ? __pfx_hlock_conflict+0x10/0x10 [ 50.837866][ T10] ? check_path.constprop.0+0x24/0x50 [ 50.838018][ T10] ? check_noncircular+0x14c/0x3e0 [ 50.838167][ T10] ? __pfx_check_noncircular+0x10/0x10 [ 50.838320][ T10] ? check_prev_add+0x194/0xce0 [ 50.838547][ T10] check_prev_add+0x194/0xce0 [ 50.838693][ T10] ? validate_chain+0x130/0x9b0 [ 50.838933][ T10] validate_chain+0x71d/0x9b0 [ 50.839087][ T10] ? mark_lock+0x38/0x3e0 [ 50.839212][ T10] ? __pfx_validate_chain+0x10/0x10 [ 50.839360][ T10] ? hlock_class+0x4e/0x130 [ 50.839507][ T10] ? mark_lock+0x38/0x3e0 [ 50.839620][ T10] __lock_acquire+0xaf0/0x1570 [ 50.839858][ T10] lock_acquire.part.0+0xeb/0x330 [ 50.840005][ T10] ? __get_task_comm+0x27/0x70 [ 50.840152][ T10] ? mark_lock+0x38/0x3e0 [ 50.840262][ T10] ? __pfx_lock_acquire.part.0+0x10/0x10 [ 50.840414][ T10] ? trace_lock_acquire+0x135/0x1c0 [ 50.840554][ T10] ? __get_task_comm+0x27/0x70 [ 50.840699][ T10] ? lock_acquire+0x32/0xc0 [ 50.840931][ T10] ? __get_task_comm+0x27/0x70 [ 50.841086][ T10] _raw_spin_lock+0x30/0x40 [ 50.841233][ T10] ? __get_task_comm+0x27/0x70 [ 50.841374][ T10] __get_task_comm+0x27/0x70 [ 50.841600][ T10] ref_tracker_alloc+0x2ee/0x490 [ 50.841836][ T10] ? __pfx_ref_tracker_alloc+0x10/0x10 [ 50.841997][ T10] ? __lock_release+0x103/0x460 [ 50.842140][ T10] ? rt6_uncached_list_flush_dev+0x494/0x840 [ 50.842323][ T10] ? rt6_disable_ip+0xd9/0x140 [ 50.842469][ T10] ? addrconf_ifdown.isra.0+0x103/0x1560 [ 50.842618][ T10] ? addrconf_notify+0xd1/0xd60 [ 50.842860][ T10] ? notifier_call_chain+0xcd/0x150 [ 50.843009][ T10] ? dev_close_many+0x2d8/0x650 [ 50.843153][ T10] ? unregister_netdevice_many_notify+0x3d5/0x1190 [ 50.843335][ T10] ? default_device_exit_batch+0x234/0x2d0 [ 50.843514][ T10] ? cleanup_net+0x4f3/0xb60 [ 50.843658][ T10] ? process_one_work+0xe2c/0x1730 [ 50.843799][ T10] ? worker_thread+0x587/0xd30 [ 50.843939][ T10] ? kthread+0x28a/0x350 [ 50.844049][ T10] ? ret_from_fork+0x31/0x70 [ 50.844191][ T10] ? ret_from_fork_asm+0x1a/0x30 [ 50.844338][ T10] ? in6_dev_get+0xcc/0x210 [ 50.844484][ T10] rt6_uncached_list_flush_dev+0x494/0x840 [ 50.844671][ T10] rt6_disable_ip+0xd9/0x140 [ 50.844815][ T10] ? __pfx_rt6_disable_ip+0x10/0x10 [ 50.845040][ T10] ? mark_lock+0x38/0x3e0 [ 50.845152][ T10] addrconf_ifdown.isra.0+0x103/0x1560 [ 50.845302][ T10] ? __try_to_del_timer_sync+0xe7/0x140 [ 50.845453][ T10] ? __pfx_addrconf_ifdown.isra.0+0x10/0x10 [ 50.845761][ T10] addrconf_notify+0xd1/0xd60 [ 50.845906][ T10] notifier_call_chain+0xcd/0x150 [ 50.846051][ T10] dev_close_many+0x2d8/0x650 [ 50.846197][ T10] ? __pfx_dev_close_many+0x10/0x10 [ 50.846343][ T10] ? default_device_exit_batch+0x81/0x2d0 [ 50.846487][ T10] ? trace_contention_end+0xdc/0x140 [ 50.846631][ T10] unregister_netdevice_many_notify+0x3d5/0x1190 [ 50.846811][ T10] ? mutex_is_locked+0x17/0x50 [ 50.846956][ T10] ? __pfx_unregister_netdevice_many_notify+0x10/0x10 [ 50.847140][ T10] ? __pfx_unregister_netdevice_queue+0x10/0x10 [ 50.847320][ T10] default_device_exit_batch+0x234/0x2d0 [ 50.847466][ T10] ? __pfx_default_device_exit_batch+0x10/0x10 [ 50.847648][ T10] ? ops_exit_list+0xb4/0x170 [ 50.847795][ T10] cleanup_net+0x4f3/0xb60 [ 50.847939][ T10] ? __pfx_lock_acquire.part.0+0x10/0x10 [ 50.848084][ T10] ? __pfx_cleanup_net+0x10/0x10 [ 50.848308][ T10] ? trace_lock_acquire+0x135/0x1c0 [ 50.848455][ T10] ? process_one_work+0xde2/0x1730 [ 50.848600][ T10] ? lock_acquire+0x32/0xc0 [ 50.848750][ T10] ? process_one_work+0xde2/0x1730 [ 50.848979][ T10] process_one_work+0xe2c/0x1730 [ 50.849126][ T10] ? __pfx___lock_release+0x10/0x10 [ 50.849358][ T10] ? __pfx_process_one_work+0x10/0x10 [ 50.849506][ T10] ? assign_work+0x16c/0x240 [ 50.849652][ T10] worker_thread+0x587/0xd30 [ 50.849800][ T10] ? __pfx_worker_thread+0x10/0x10 [ 50.850041][ T10] kthread+0x28a/0x350 [ 50.850153][ T10] ? __pfx_kthread+0x10/0x10 [ 50.850301][ T10] ret_from_fork+0x31/0x70 [ 50.850457][ T10] ? __pfx_kthread+0x10/0x10 [ 50.850599][ T10] ret_from_fork_asm+0x1a/0x30 [ 50.850754][ T10]