• Heiko Carstens's avatar
    s390: fix system call exit path · ce9dfafe
    Heiko Carstens authored
    The system call exit path is running with interrupts enabled while
    checking for TIF/PIF/CIF bits which require special handling. If all
    bits have been checked interrupts are disabled and the kernel exits to
    user space.
    The problem is that after checking all bits and before interrupts are
    disabled bits can be set already again, due to interrupt handling.
    
    This means that the kernel can exit to user space with some
    TIF/PIF/CIF bits set, which should never happen. E.g. TIF_NEED_RESCHED
    might be set, which might lead to additional latencies, since that bit
    will only be recognized with next exit to user space.
    
    Fix this by checking the corresponding bits only when interrupts are
    disabled.
    
    Fixes: 0b0ed657 ("s390: remove critical section cleanup from entry.S")
    Cc: <stable@vger.kernel.org> # 5.8
    Acked-by: default avatarSven Schnelle <svens@linux.ibm.com>
    Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    ce9dfafe
entry.S 33.7 KB