[tip: sched/core] sched/core: Check for rcu_read_lock_any_held() in idle_get_state()

From: tip-bot2 for K Prateek Nayak

Date: Wed Mar 18 2026 - 04:11:09 EST


The following commit has been merged into the sched/core branch of tip:

Commit-ID: f494bfb04615119f31dbd3222c9d39fea3817d40
Gitweb: https://git.kernel.org/tip/f494bfb04615119f31dbd3222c9d39fea3817d40
Author: K Prateek Nayak <kprateek.nayak@xxxxxxx>
AuthorDate: Thu, 12 Mar 2026 04:44:31
Committer: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
CommitterDate: Wed, 18 Mar 2026 09:06:49 +01:00

sched/core: Check for rcu_read_lock_any_held() in idle_get_state()

Similar to commit 71fedc41c23b ("sched/fair: Switch to
rcu_dereference_all()"), switch to checking for rcu_read_lock_any_held()
in idle_get_state() to allow removing superfluous rcu_read_lock()
regions in the fair task's wakeup path where the pi_lock is held and
IRQs are disabled.

Signed-off-by: K Prateek Nayak <kprateek.nayak@xxxxxxx>
Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@xxxxxxx>
Tested-by: Dietmar Eggemann <dietmar.eggemann@xxxxxxx>
Link: https://patch.msgid.link/20260312044434.1974-7-kprateek.nayak@xxxxxxx
---
kernel/sched/sched.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 953d89d..b863bbd 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -2853,7 +2853,7 @@ static inline void idle_set_state(struct rq *rq,

static inline struct cpuidle_state *idle_get_state(struct rq *rq)
{
- WARN_ON_ONCE(!rcu_read_lock_held());
+ lockdep_assert(rcu_read_lock_any_held());

return rq->idle_state;
}