From: Vasily Gorbik <g...@linux.ibm.com>

[ Upstream commit 2835c2ea95d50625108e47a459e1a47f6be836ce ]

Currently we overflow save_area_sync and write over
save_area_async. Although this is not a real problem make
startup_pgm_check_handler consistent with late pgm check handler and
store [%r0,%r7] directly into gpregs_save_area.

Reviewed-by: Sven Schnelle <sv...@linux.ibm.com>
Signed-off-by: Vasily Gorbik <g...@linux.ibm.com>
Signed-off-by: Sasha Levin <sas...@kernel.org>
---
 arch/s390/boot/head.S | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/arch/s390/boot/head.S b/arch/s390/boot/head.S
index dae10961d0724..1a2c2b1ed9649 100644
--- a/arch/s390/boot/head.S
+++ b/arch/s390/boot/head.S
@@ -360,22 +360,23 @@ ENTRY(startup_kdump)
 # the save area and does disabled wait with a faulty address.
 #
 ENTRY(startup_pgm_check_handler)
-       stmg    %r0,%r15,__LC_SAVE_AREA_SYNC
-       la      %r1,4095
-       stctg   %c0,%c15,__LC_CREGS_SAVE_AREA-4095(%r1)
-       mvc     __LC_GPREGS_SAVE_AREA-4095(128,%r1),__LC_SAVE_AREA_SYNC
-       mvc     __LC_PSW_SAVE_AREA-4095(16,%r1),__LC_PGM_OLD_PSW
+       stmg    %r8,%r15,__LC_SAVE_AREA_SYNC
+       la      %r8,4095
+       stctg   %c0,%c15,__LC_CREGS_SAVE_AREA-4095(%r8)
+       stmg    %r0,%r7,__LC_GPREGS_SAVE_AREA-4095(%r8)
+       mvc     __LC_GPREGS_SAVE_AREA-4095+64(64,%r8),__LC_SAVE_AREA_SYNC
+       mvc     __LC_PSW_SAVE_AREA-4095(16,%r8),__LC_PGM_OLD_PSW
        mvc     __LC_RETURN_PSW(16),__LC_PGM_OLD_PSW
        ni      __LC_RETURN_PSW,0xfc    # remove IO and EX bits
        ni      __LC_RETURN_PSW+1,0xfb  # remove MCHK bit
        oi      __LC_RETURN_PSW+1,0x2   # set wait state bit
-       larl    %r2,.Lold_psw_disabled_wait
-       stg     %r2,__LC_PGM_NEW_PSW+8
-       l       %r15,.Ldump_info_stack-.Lold_psw_disabled_wait(%r2)
+       larl    %r9,.Lold_psw_disabled_wait
+       stg     %r9,__LC_PGM_NEW_PSW+8
+       l       %r15,.Ldump_info_stack-.Lold_psw_disabled_wait(%r9)
        brasl   %r14,print_pgm_check_info
 .Lold_psw_disabled_wait:
-       la      %r1,4095
-       lmg     %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r1)
+       la      %r8,4095
+       lmg     %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r8)
        lpswe   __LC_RETURN_PSW         # disabled wait
 .Ldump_info_stack:
        .long   0x5000 + PAGE_SIZE - STACK_FRAME_OVERHEAD
-- 
2.27.0



Reply via email to