• M
    powerpc/tm: Fix userspace r13 corruption · cf13435b
    Michael Neuling 提交于
    When we treclaim we store the userspace checkpointed r13 to a scratch
    SPR and then later save the scratch SPR to the user thread struct.
    
    Unfortunately, this doesn't work as accessing the user thread struct
    can take an SLB fault and the SLB fault handler will write the same
    scratch SPRG that now contains the userspace r13.
    
    To fix this, we store r13 to the kernel stack (which can't fault)
    before we access the user thread struct.
    
    Found by running P8 guest + powervm + disable_1tb_segments + TM. Seen
    as a random userspace segfault with r13 looking like a kernel address.
    Signed-off-by: NMichael Neuling <mikey@neuling.org>
    Reviewed-by: NBreno Leitao <leitao@debian.org>
    Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
    cf13435b
tm.S 11.9 KB