• John David Anglin's avatar
    parisc: Ensure consistent state when switching to kernel stack at syscall entry · 176ae640
    John David Anglin authored
    commit 6ed51832 upstream.
    
    We have one critical section in the syscall entry path in which we switch from
    the userspace stack to kernel stack. In the event of an external interrupt, the
    interrupt code distinguishes between those two states by analyzing the value of
    sr7. If sr7 is zero, it uses the kernel stack. Therefore it's important, that
    the value of sr7 is in sync with the currently enabled stack.
    
    This patch now disables interrupts while executing the critical section.  This
    prevents the interrupt handler to possibly see an inconsistent state which in
    the worst case can lead to crashes.
    
    Interestingly, in the syscall exit path interrupts were already disabled in the
    critical section which switches back to the userspace stack.
    Signed-off-by: default avatarJohn David Anglin <dave.anglin@bell.net>
    Signed-off-by: default avatarHelge Deller <deller@gmx.de>
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    176ae640
syscall.S 26.1 KB