We have the nice array to test SIGP calls with invalid CPU addresses. Move the SIGP cases there to eliminate some of the duplicated code in test_emcall and test_cond_emcall. Since adding coverage for invalid CPU addresses in the ecall case is now trivial, do that as well. Signed-off-by: Nico Boehr <nrb@xxxxxxxxxxxxx> --- s390x/smp.c | 18 +++--------------- 1 file changed, 3 insertions(+), 15 deletions(-) diff --git a/s390x/smp.c b/s390x/smp.c index 6d474d0d4f99..ea811087587e 100644 --- a/s390x/smp.c +++ b/s390x/smp.c @@ -30,6 +30,9 @@ static const struct sigp_invalid_cases cases_invalid_cpu_addr[] = { { SIGP_STOP, "stop with invalid CPU address" }, { SIGP_START, "start with invalid CPU address" }, { SIGP_CPU_RESET, "reset with invalid CPU address" }, + { SIGP_COND_EMERGENCY_SIGNAL, "conditional emcall with invalid CPU address" }, + { SIGP_EMERGENCY_SIGNAL, "emcall with invalid CPU address" }, + { SIGP_EXTERNAL_CALL, "ecall with invalid CPU address" }, { INVALID_ORDER_CODE, "invalid order code and CPU address" }, { SIGP_SENSE, "sense with invalid CPU address" }, { SIGP_STOP_AND_STORE_STATUS, "stop and store status with invalid CPU address" }, @@ -337,7 +340,6 @@ static void emcall(void) static void test_emcall(void) { struct psw psw; - int cc; psw.mask = extract_psw_mask(); psw.addr = (unsigned long)emcall; @@ -351,13 +353,6 @@ static void test_emcall(void) wait_for_flag(); smp_cpu_stop(1); - report_prefix_push("invalid CPU address"); - - cc = sigp(INVALID_CPU_ADDRESS, SIGP_EMERGENCY_SIGNAL, 0, NULL); - report(cc == 3, "CC = 3"); - - report_prefix_pop(); - report_prefix_pop(); } @@ -376,13 +371,6 @@ static void test_cond_emcall(void) goto out; } - report_prefix_push("invalid CPU address"); - - cc = sigp(INVALID_CPU_ADDRESS, SIGP_COND_EMERGENCY_SIGNAL, 0, NULL); - report(cc == 3, "CC = 3"); - - report_prefix_pop(); - report_prefix_push("success"); set_flag(0); -- 2.35.3