Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d9e96f3 authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

Revert "powerpc/tm: Unset MSR[TS] if not recheckpointing"



This reverts commit a9935a12 which is
commit 6f5b9f018f4c7686fd944d920209d1382d320e4e upstream.

It breaks the powerpc build, so drop it from the tree until a fix goes
upstream.

Reported-by: default avatarGuenter Roeck <linux@roeck-us.net>
Cc: Breno Leitao <leitao@debian.org>
Cc: Michal Suchánek <msuchanek@suse.de>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Christoph Biedl <linux-kernel.bfrz@manchmal.in-ulm.de>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent eb05c029
Loading
Loading
Loading
Loading
+5 −13
Original line number Diff line number Diff line
@@ -1140,11 +1140,11 @@ SYSCALL_DEFINE0(rt_sigreturn)
{
	struct rt_sigframe __user *rt_sf;
	struct pt_regs *regs = current_pt_regs();
	int tm_restore = 0;
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
	struct ucontext __user *uc_transact;
	unsigned long msr_hi;
	unsigned long tmp;
	int tm_restore = 0;
#endif
	/* Always make any pending restarted system calls return -EINTR */
	current->restart_block.fn = do_no_restart_syscall;
@@ -1192,17 +1192,9 @@ SYSCALL_DEFINE0(rt_sigreturn)
				goto bad;
		}
	}
	if (!tm_restore) {
		/*
		 * Unset regs->msr because ucontext MSR TS is not
		 * set, and recheckpoint was not called. This avoid
		 * hitting a TM Bad thing at RFID
		 */
		regs->msr &= ~MSR_TS_MASK;
	}
	if (!tm_restore)
		/* Fall through, for non-TM restore */
#endif
	if (!tm_restore)
	if (do_setcontext(&rt_sf->uc, regs, 1))
		goto bad;

+4 −16
Original line number Diff line number Diff line
@@ -740,23 +740,11 @@ SYSCALL_DEFINE0(rt_sigreturn)
					   &uc_transact->uc_mcontext))
			goto badframe;
	}
#endif
	else
	/* Fall through, for non-TM restore */
	if (!MSR_TM_ACTIVE(msr)) {
		/*
		 * Unset MSR[TS] on the thread regs since MSR from user
		 * context does not have MSR active, and recheckpoint was
		 * not called since restore_tm_sigcontexts() was not called
		 * also.
		 *
		 * If not unsetting it, the code can RFID to userspace with
		 * MSR[TS] set, but without CPU in the proper state,
		 * causing a TM bad thing.
		 */
		current->thread.regs->msr &= ~MSR_TS_MASK;
#endif
	if (restore_sigcontext(current, NULL, 1, &uc->uc_mcontext))
		goto badframe;
	}

	if (restore_altstack(&uc->uc_stack))
		goto badframe;