From: Zqiang Date: Wed, 25 Mar 2026 03:11:00 +0000 (+0800) Subject: sched_ext: Choose the right sch->ops.name to output in the print_scx_info() X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=60d4b17e886a90e707eaa06f8b07539f603cec5b;p=thirdparty%2Flinux.git sched_ext: Choose the right sch->ops.name to output in the print_scx_info() The print_scx_info() always output scx_root structure's->ops.name, but for built with CONFIG_EXT_SUB_SCHED=y kernels, the tasks may be attach an sub scx_sched structure. this commit therefore use the scx_task_sched_rcu() to correctly get scx_sched structure to output ops.name, and drop state check. Suggested-by: Tejun Heo Signed-off-by: Zqiang Signed-off-by: Tejun Heo --- diff --git a/kernel/sched/ext.c b/kernel/sched/ext.c index 2472231ec5566..551bfb99157d1 100644 --- a/kernel/sched/ext.c +++ b/kernel/sched/ext.c @@ -7680,14 +7680,18 @@ static void kick_cpus_irq_workfn(struct irq_work *irq_work) */ void print_scx_info(const char *log_lvl, struct task_struct *p) { - struct scx_sched *sch = scx_root; + struct scx_sched *sch; enum scx_enable_state state = scx_enable_state(); const char *all = READ_ONCE(scx_switching_all) ? "+all" : ""; char runnable_at_buf[22] = "?"; struct sched_class *class; unsigned long runnable_at; - if (state == SCX_DISABLED) + guard(rcu)(); + + sch = scx_task_sched_rcu(p); + + if (!sch) return; /*