[kvm-unit-tests PATCH 1/1] s390x: sclp: consider monoprocessor on read_info error

Pierre Morel
2023-04-24T17:42:43Z

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@linux.ibm.com>
---
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