In the Linux kernel, the following vulnerability has been resolved:
srcu: Use irq_work to start GP in tiny SRCU
Tiny SRCU's srcugpstartifneeded() 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:
callsrcu() [holding pilock] srcugpstartifneeded() schedule_work() -> pool->lock
workqueueinit() / createworker() [holding pool->lock] wakeupprocess() -> trytowakeup() -> pilock
Also add irqworksync() to cleanupsrcustruct() 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 irqwork to start processsrcu()" ]
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/43xxx/CVE-2026-43115.json",
"cna_assigner": "Linux"
}