When we can not read SCP information we can not abort during sclp_get_cpu_num() because this function is called during exit and calling it will lead to an infnite loop. The loop is: abort() -> exit() -> smp_teardown() -> smp_query_num_cpus() -> sclp_get_cpu_num() -> assert() -> abort() Since smp_setup() is done after sclp_read_info() inside setup() this loop happens when only the start processor is running. Let sclp_get_cpu_num() return 1 in this case. Fixes: 52076a63d569 ("s390x: Consolidate sclp read info") Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx> --- lib/s390x/sclp.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/s390x/sclp.c b/lib/s390x/sclp.c index acdc8a9..c09360d 100644 --- a/lib/s390x/sclp.c +++ b/lib/s390x/sclp.c @@ -119,8 +119,9 @@ void sclp_read_info(void) int sclp_get_cpu_num(void) { - assert(read_info); - return read_info->entries_cpu; + if (read_info) + return read_info->entries_cpu; + return 1; } CPUEntry *sclp_get_cpu_entries(void) -- 2.31.1