]> Pileus Git - ~andy/linux/blobdiff - arch/x86/kernel/ptrace.c
Merge tag 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik...
[~andy/linux] / arch / x86 / kernel / ptrace.c
index c4c6a5c2bf0f393ffa8588a1fa7376bcaa9513bb..b00b33a183908bdb201aa38266e40ad87d89754d 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/signal.h>
 #include <linux/perf_event.h>
 #include <linux/hw_breakpoint.h>
+#include <linux/rcupdate.h>
 
 #include <asm/uaccess.h>
 #include <asm/pgtable.h>
@@ -1332,9 +1333,6 @@ static const struct user_regset_view user_x86_64_view = {
 #define genregs32_get          genregs_get
 #define genregs32_set          genregs_set
 
-#define user_i387_ia32_struct  user_i387_struct
-#define user32_fxsr_struct     user_fxsr_struct
-
 #endif /* CONFIG_X86_64 */
 
 #if defined CONFIG_X86_32 || defined CONFIG_IA32_EMULATION
@@ -1463,6 +1461,8 @@ long syscall_trace_enter(struct pt_regs *regs)
 {
        long ret = 0;
 
+       rcu_user_exit();
+
        /*
         * If we stepped into a sysenter/syscall insn, it trapped in
         * kernel mode; do_debug() cleared TF and set TIF_SINGLESTEP.
@@ -1526,4 +1526,6 @@ void syscall_trace_leave(struct pt_regs *regs)
                        !test_thread_flag(TIF_SYSCALL_EMU);
        if (step || test_thread_flag(TIF_SYSCALL_TRACE))
                tracehook_report_syscall_exit(regs, step);
+
+       rcu_user_enter();
 }