lkml.org 
[lkml]   [2020]   [Nov]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.9 055/391] s390/startup: avoid save_area_sync overflow
    Date
    From: Vasily Gorbik <gor@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 <svens@linux.ibm.com>
    Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: Sasha Levin <sashal@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


    \
     
     \ /
      Last update: 2020-11-03 23:10    [W:4.279 / U:0.324 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site