Re: [PATCH] rcu-tasks: Defer IRQ-disabled callback enqueue to irq_work
Matt Fleming <[email protected]> Tue, 28 Jul 2026 11:39:33 +0100
| Newsgroups | dev.linux.lists.sched-ext,org.kernel.vger.linux-kernel,org.kernel.vger.rcu,org.kernel.vger.stable |
|---|---|
| Message-ID | <amiGJWJ-tzUMYizu@matt-Precision-5490> |
On Mon, Jul 13, 2026 at 11:12:45AM +0100, Matt Fleming wrote: > From: Matt Fleming <[email protected]> > > 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