Do you mean in this part of code?
SYSCALL_DEFINE0(rt_sigreturn)
{
....
if (__copy_from_user(&set, &uc->uc_sigmask, sizeof(set)))
goto badframe;
...
if (MSR_TM_SUSPENDED(mfmsr()))
tm_reclaim_current(0);
I'm actually thinking after the reclaim, not before.
If I follow your original email properly, you have a problem because you end up
in this senario:
1) Current MSR is not TM suspended
2) regs->msr[TS] set
3) get_user() (which may fault)
After the tm_reclaim there are cases in restore_tm_sigcontexts() where the above
is also the case. Hence why I think we have a problem there too.
Mikey