• Heiko Carstens's avatar
    s390/ipl_parm: fix program check new psw handling · 88c2510c
    Heiko Carstens authored
    The __diag308() inline asm temporarily changes the program check new
    psw to redirect a potential program check on the diag instruction.
    Restoring of the program check new psw is done in C code behind the
    inline asm.
    
    This can be problematic, especially if the function is inlined, since
    the compiler can reorder instructions in such a way that a different
    instruction, which may result in a program check, might be executed
    before the program check new psw has been restored.
    
    To avoid such a scenario move restoring into the inline asm. For
    consistency reasons move also saving of the original program check new
    psw into the inline asm.
    Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    88c2510c
ipl_parm.c 6.6 KB