• Michael Neuling's avatar
    powerpc/tm: Avoid possible userspace r1 corruption on reclaim · 96dc89d5
    Michael Neuling authored
    Current we store the userspace r1 to PACATMSCRATCH before finally
    saving it to the thread struct.
    
    In theory an exception could be taken here (like a machine check or
    SLB miss) that could write PACATMSCRATCH and hence corrupt the
    userspace r1. The SLB fault currently doesn't touch PACATMSCRATCH, but
    others do.
    
    We've never actually seen this happen but it's theoretically
    possible. Either way, the code is fragile as it is.
    
    This patch saves r1 to the kernel stack (which can't fault) before we
    turn MSR[RI] back on. PACATMSCRATCH is still used but only with
    MSR[RI] off. We then copy r1 from the kernel stack to the thread
    struct once we have MSR[RI] back on.
    Suggested-by: default avatarBreno Leitao <leitao@debian.org>
    Signed-off-by: default avatarMichael Neuling <mikey@neuling.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    96dc89d5
tm.S 12.1 KB