summaryrefslogtreecommitdiff
path: root/samples
diff options
context:
space:
mode:
authorJoel Fernandes <joelagnelf@nvidia.com>2026-03-24 03:14:18 +0300
committerBoqun Feng <boqun@kernel.org>2026-03-25 19:00:05 +0300
commita6fc88b22bc8d12ad52e8412c667ec0f5bf055af (patch)
tree6396eaf57af049fd4c5c2b03e44fb90c95f8179d /samples
parent7c405fb3279b39244b260b54f1bd6488689ae235 (diff)
downloadlinux-a6fc88b22bc8d12ad52e8412c667ec0f5bf055af.tar.xz
srcu: Use irq_work to start GP in tiny SRCU
Tiny SRCU's srcu_gp_start_if_needed() directly calls schedule_work(), which acquires the workqueue pool->lock. This causes a lockdep splat when call_srcu() is called with a scheduler lock held, due to: call_srcu() [holding pi_lock] srcu_gp_start_if_needed() schedule_work() -> pool->lock workqueue_init() / create_worker() [holding pool->lock] wake_up_process() -> try_to_wake_up() -> pi_lock Also add irq_work_sync() to cleanup_srcu_struct() to prevent a use-after-free if a queued irq_work fires after cleanup begins. Tested with rcutorture SRCU-T and no lockdep warnings. [ Thanks to Boqun for similar fix in patch "rcu: Use an intermediate irq_work to start process_srcu()" ] Signed-off-by: Joel Fernandes <joelagnelf@nvidia.com> Reviewed-by: Paul E. McKenney <paulmck@kernel.org> Signed-off-by: Boqun Feng <boqun@kernel.org>
Diffstat (limited to 'samples')
0 files changed, 0 insertions, 0 deletions