• Heiko Carstens's avatar
    s390/stack: fix possible register corruption with stack switch helper · 67147e96
    Heiko Carstens authored
    The CALL_ON_STACK macro is used to call a C function from inline
    assembly, and therefore must consider the C ABI, which says that only
    registers 6-13, and 15 are non-volatile (restored by the called
    function).
    
    The inline assembly incorrectly marks all registers used to pass
    parameters to the called function as read-only input operands, instead
    of operands that are read and written to. This might result in
    register corruption depending on usage, compiler, and compile options.
    
    Fix this by marking all operands used to pass parameters as read/write
    operands. To keep the code simple even register 6, if used, is marked
    as read-write operand.
    
    Fixes: ff340d24 ("s390: add stack switch helper")
    Cc: <stable@kernel.org> # 4.20
    Reviewed-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    67147e96
stacktrace.h 4.08 KB