Re: [PATCH] rcu-tasks: Defer IRQ-disabled callback enqueue to irq_work
From: Matt Fleming
Date: Tue Jul 28 2026 - 06:54:10 EST
On Mon, Jul 13, 2026 at 11:12:45AM +0100, Matt Fleming wrote:
> From: Matt Fleming <mfleming@xxxxxxxxxxxxxx>
>
> call_rcu_tasks_generic() can be invoked with IRQs disabled, and on
> older kernels this exposed an ABBA deadlock against the scheduler
> runqueue lock via sched_ext's task-storage teardown path:
>
> CPU 0 CPU 1
> ----- -----
> sched_ext_free()
> task_rq_lock()
> raw_spin_lock(rq->lock)
> rcu_tasks_one_gp()
> raw_spin_lock(cbs_gbl_lock)
> scx_exit_task()
> bpf_task_storage_delete()
> call_rcu_tasks_generic()
> raw_spin_lock(cbs_gbl_lock)
> <blocks>
> _printk()
> console_unlock()
> try_to_wake_up()
> raw_spin_lock(rq->lock)
> <blocks>
Hey Paul, it looks like this didn't get picked up and now won't apply
cleanly to your tree. Should I submit a v2?
Thanks,
Matt