[FIX] x86 jumps 56/33656/2
authorVasiliy Ulyanov <v.ulyanov@samsung.com>
Thu, 7 Aug 2014 10:46:33 +0000 (14:46 +0400)
committerAlexander Aksenov <a.aksenov@samsung.com>
Tue, 24 Feb 2015 08:18:32 +0000 (11:18 +0300)
Change-Id: Iea9f6eacb1142bd16c150c6cf6a658b9935e38a9
Signed-off-by: Vasiliy Ulyanov <v.ulyanov@samsung.com>
uprobe/arch/x86/swap-asm/swap_uprobes.c

index f4faca5..1d4ed5d 100644 (file)
@@ -415,8 +415,14 @@ static int uprobe_handler(struct pt_regs *regs)
                }
 
                if (!p->pre_handler || !p->pre_handler(p, regs)) {
+
                        if (p->ainsn.boostable == 1 && !p->post_handler) {
-                               regs->EREG(ip) = (unsigned long)p->ainsn.insn;
+                               if (p->ss_addr[smp_processor_id()]) {
+                                       regs->EREG(ip) = (unsigned long)p->ss_addr[smp_processor_id()];
+                                       p->ss_addr[smp_processor_id()] = NULL;
+                               } else {
+                                       regs->EREG(ip) = (unsigned long)p->ainsn.insn;
+                               }
                                return 1;
                        }