uprobes: Move clear_thread_flag(TIF_UPROBE) to uprobe_notify_resume()
authorOleg Nesterov <oleg@redhat.com>
Fri, 14 Sep 2012 17:05:46 +0000 (19:05 +0200)
committerOleg Nesterov <oleg@redhat.com>
Sat, 29 Sep 2012 19:21:53 +0000 (21:21 +0200)
Move clear_thread_flag(TIF_UPROBE) from do_notify_resume() to
uprobe_notify_resume() for !CONFIG_UPROBES case.

Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
arch/x86/kernel/signal.c
kernel/events/uprobes.c

index b280908a376e20efc6773b76c6e80353ef8680f4..0041e5a5293bdb06efa0c95aedaf70dcd8eee090 100644 (file)
@@ -785,10 +785,8 @@ do_notify_resume(struct pt_regs *regs, void *unused, __u32 thread_info_flags)
                mce_notify_process();
 #endif /* CONFIG_X86_64 && CONFIG_X86_MCE */
 
-       if (thread_info_flags & _TIF_UPROBE) {
-               clear_thread_flag(TIF_UPROBE);
+       if (thread_info_flags & _TIF_UPROBE)
                uprobe_notify_resume(regs);
-       }
 
        /* deal with pending signal delivery */
        if (thread_info_flags & _TIF_SIGPENDING)
index d3f5381e74826deab59b28eed895ce5a4b8c9c57..198d732ab9012e3802008e60d46a87065a003d7b 100644 (file)
@@ -1558,6 +1558,8 @@ void uprobe_notify_resume(struct pt_regs *regs)
 {
        struct uprobe_task *utask;
 
+       clear_thread_flag(TIF_UPROBE);
+
        utask = current->utask;
        if (utask && utask->active_uprobe)
                handle_singlestep(utask, regs);