summaryrefslogtreecommitdiffstats
path: root/arch/x86/entry/common.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-08-06 09:04:35 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-08-06 09:04:35 -0400
commitc98f5827f8f0e0cb075075def7f0d210992ef06d (patch)
tree28d629439a846eac733ab525a0d2d4a8e6a1649c /arch/x86/entry/common.c
parent1630e843e104528ddf0208dfc692c70c9bd05a89 (diff)
parentf7d665627e103e82d34306c7d3f6f46f387c0d8b (diff)
downloadlinux-c98f5827f8f0e0cb075075def7f0d210992ef06d.tar.gz
linux-c98f5827f8f0e0cb075075def7f0d210992ef06d.tar.bz2
linux-c98f5827f8f0e0cb075075def7f0d210992ef06d.zip
Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 fixes from Ingo Molnar: "Two fixes and a cleanup-fix, to the syscall entry code and to ptrace" * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/syscalls/64: Add compat_sys_keyctl for 32-bit userspace x86/ptrace: Stop setting TS_COMPAT in ptrace code x86/vdso: Error out if the vDSO isn't a valid DSO
Diffstat (limited to 'arch/x86/entry/common.c')
-rw-r--r--arch/x86/entry/common.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c
index a1e71d431fed..1433f6b4607d 100644
--- a/arch/x86/entry/common.c
+++ b/arch/x86/entry/common.c
@@ -204,8 +204,12 @@ __visible inline void prepare_exit_to_usermode(struct pt_regs *regs)
* handling, because syscall restart has a fixup for compat
* syscalls. The fixup is exercised by the ptrace_syscall_32
* selftest.
+ *
+ * We also need to clear TS_REGS_POKED_I386: the 32-bit tracer
+ * special case only applies after poking regs and before the
+ * very next return to user mode.
*/
- ti->status &= ~TS_COMPAT;
+ ti->status &= ~(TS_COMPAT|TS_I386_REGS_POKED);
#endif
user_enter_irqoff();