From dd8d3dc9fab2c9fe988c682fc5de896de5c6afad Mon Sep 17 00:00:00 2001 From: Ruslan Ruslichenko Date: Fri, 25 Sep 2026 23:30:22 +0200 Subject: [PATCH] xen/sched: fix scheduler callback verification on init During core scheduler initialization, each registered scheduler is sanity tested in two steps: - it must provide required callbacks (e.g. init, do_schedule). - if global_init callback is present, it must succeed. If any of the steps fail, scheduler entry is cleared in global 'schedulers' array. However, in the current implementation, if verification fails during the first step, the scheduler entry is cleared but verification sequence is not interrupted. This lead to NULL pointer dereference when subsequent required callbacks verified, and possible during the second step. The patch fixes the crashes by skipping consequent checks if one of the required callbacks are not present for the scheduler. Fixes: ec25b3c0261c ("xen/sched: only allow schedulers with all mandatory functions available") Signed-off-by: Ruslan Ruslichenko Reviewed-by: Jan Beulich Reviewed-by: Juergen Gross --- xen/common/sched/core.c | 1 + 1 file changed, 1 insertion(+) diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c index 911551a328..0b072bdee6 100644 --- a/xen/common/sched/core.c +++ b/xen/common/sched/core.c @@ -3064,6 +3064,7 @@ void __init scheduler_init(void) printk("scheduler %s misses .%s, dropped\n", \ schedulers[i]->opt_name, #f); \ schedulers[i] = NULL; \ + continue; \ } sched_test_func(init);