[PATCH 3/4] powerpc/tm: Unset MSR[TS] if not recheckpointing

Michal Suchánek msuchanek at suse.de
Sat Dec 8 00:48:38 AEDT 2018


On Mon, 26 Nov 2018 18:12:00 -0200
Breno Leitao <leitao at debian.org> wrote:

> There is a TM Bad Thing bug that can be caused when you return from a
> signal context in a suspended transaction but with ucontext MSR[TS] unset.
> 
> This forces regs->msr[TS] to be set at syscall entrance (since the CPU
> state is transactional). It also calls treclaim() to flush the transaction
> state, which is done based on the live (mfmsr) MSR state.
> 
> Since user context MSR[TS] is not set, then restore_tm_sigcontexts() is not
> called, thus, not executing recheckpoint, keeping the CPU state as not
> transactional. When calling rfid, SRR1 will have MSR[TS] set, but the CPU
> state is non transactional, causing the TM Bad Thing with the following
> stack:
> 

Works for me on Linux 4.4 and 4.12

Tested-by: Michal Suchánek <msuchanek at suse.de>

Thanks


More information about the Linuxppc-dev mailing list