[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