On Fri, 2013-06-07 at 20:36 +1000, Michael Neuling wrote: > Currently sys_sigreturn() is TM unaware. Therefore, if we take a 32 bit > signal > without SIGINFO (non RT) inside a transaction, on signal return we don't > restore the signal frame correctly. > > This checks if the signal frame being restoring is an active transaction, and > if so, it copies the additional state to ptregs so it can be restored. > > Signed-off-by: Michael Neuling <mi...@neuling.org> > ---
.../... > +#ifdef CONFIG_PPC_TRANSACTIONAL_MEM > + mcp = (struct mcontext __user *)&sf->mctx; > + tm_mcp = (struct mcontext __user *)&sf->mctx_transact; > + if (__get_user(msr_hi, &tm_mcp->mc_gregs[PT_MSR])) > goto badframe; > + if MSR_TM_ACTIVE(msr_hi<<32) { Mising ( and ). I'll apply that fix locally. Appart from that, I suppose it's ok. I don't see any exposure coming from users "cooking" the tm_frame and calling sigreturn, so as long as we are confident userspace generally only uses sigreturn with frames it got from an actual signal, and doesn't try to "generate" frames by hand, we should be ok. Cheers, Ben. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev