[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20190111131119.396416827@linuxfoundation.org>
Date: Fri, 11 Jan 2019 15:15:06 +0100
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
To: linux-kernel@...r.kernel.org
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
stable@...r.kernel.org, Guenter Roeck <linux@...ck-us.net>,
Breno Leitao <leitao@...ian.org>,
Michal Suchánek <msuchanek@...e.de>,
Michael Ellerman <mpe@...erman.id.au>,
Christoph Biedl <linux-kernel.bfrz@...chmal.in-ulm.de>
Subject: [PATCH 4.19 128/148] Revert "powerpc/tm: Unset MSR[TS] if not recheckpointing"
4.19-stable review patch. If anyone has any objections, please let me know.
------------------
From: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
This reverts commit a9935a12768851762089fda8e5a9daaf0231808e which is
commit 6f5b9f018f4c7686fd944d920209d1382d320e4e upstream.
It breaks the powerpc build, so drop it from the tree until a fix goes
upstream.
Reported-by: Guenter Roeck <linux@...ck-us.net>
Cc: Breno Leitao <leitao@...ian.org>
Cc: Michal Suchánek <msuchanek@...e.de>
Cc: Michael Ellerman <mpe@...erman.id.au>
Cc: Christoph Biedl <linux-kernel.bfrz@...chmal.in-ulm.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
---
arch/powerpc/kernel/signal_32.c | 18 +++++-------------
arch/powerpc/kernel/signal_64.c | 20 ++++----------------
2 files changed, 9 insertions(+), 29 deletions(-)
--- a/arch/powerpc/kernel/signal_32.c
+++ b/arch/powerpc/kernel/signal_32.c
@@ -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,19 +1192,11 @@ 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;
- }
- /* Fall through, for non-TM restore */
-#endif
if (!tm_restore)
- if (do_setcontext(&rt_sf->uc, regs, 1))
- goto bad;
+ /* Fall through, for non-TM restore */
+#endif
+ if (do_setcontext(&rt_sf->uc, regs, 1))
+ goto bad;
/*
* It's not clear whether or why it is desirable to save the
--- a/arch/powerpc/kernel/signal_64.c
+++ b/arch/powerpc/kernel/signal_64.c
@@ -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;
- if (restore_sigcontext(current, NULL, 1, &uc->uc_mcontext))
- goto badframe;
- }
+#endif
+ if (restore_sigcontext(current, NULL, 1, &uc->uc_mcontext))
+ goto badframe;
if (restore_altstack(&uc->uc_stack))
goto badframe;
Powered by blists - more mailing lists