diff options
| author | Boqun Feng <boqun@kernel.org> | 2026-03-19 03:56:21 +0300 |
|---|---|---|
| committer | Boqun Feng <boqun@kernel.org> | 2026-03-25 18:59:59 +0300 |
| commit | 7c405fb3279b39244b260b54f1bd6488689ae235 (patch) | |
| tree | 223cf55ff026faf1cc094561d3d3292230caa00b /samples/workqueue | |
| parent | 61bbcfb50514a8a94e035a7349697a3790ab4783 (diff) | |
| download | linux-7c405fb3279b39244b260b54f1bd6488689ae235.tar.xz | |
rcu: Use an intermediate irq_work to start process_srcu()
Since commit c27cea4416a3 ("rcu: Re-implement RCU Tasks Trace in terms
of SRCU-fast") we switched to SRCU in BPF. However as BPF instrument can
happen basically everywhere (including where a scheduler lock is held),
call_srcu() now needs to avoid acquiring scheduler lock because
otherwise it could cause deadlock [1]. Fix this by following what the
previous RCU Tasks Trace did: using an irq_work to delay the queuing of
the work to start process_srcu().
[boqun: Apply Joel's feedback]
[boqun: Apply Andrea's test feedback]
Reported-by: Andrea Righi <arighi@nvidia.com>
Closes: https://lore.kernel.org/all/abjzvz_tL_siV17s@gpd4/
Fixes: commit c27cea4416a3 ("rcu: Re-implement RCU Tasks Trace in terms of SRCU-fast")
Link: https://lore.kernel.org/rcu/3c4c5a29-24ea-492d-aeee-e0d9605b4183@nvidia.com/ [1]
Suggested-by: Zqiang <qiang.zhang@linux.dev>
Tested-by: Andrea Righi <arighi@nvidia.com>
Tested-by: Paul E. McKenney <paulmck@kernel.org>
Tested-by: Joel Fernandes <joelagnelf@nvidia.com>
Signed-off-by: Boqun Feng <boqun@kernel.org>
Diffstat (limited to 'samples/workqueue')
0 files changed, 0 insertions, 0 deletions
