[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen staging] xen/sched: fix scheduler callback verification on init



commit dd8d3dc9fab2c9fe988c682fc5de896de5c6afad
Author:     Ruslan Ruslichenko <Ruslan_Ruslichenko@xxxxxxxx>
AuthorDate: Fri Sep 25 23:30:22 2026 +0200
Commit:     Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
CommitDate: Thu Oct 1 19:14:42 2026 +0100

    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 <Ruslan_Ruslichenko@xxxxxxxx>
    Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>
    Reviewed-by: Juergen Gross <jgross@xxxxxxxx>
---
 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);
--
generated by git-patchbot for /home/xen/git/xen.git#staging



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.