[FIX] remove uprobe from hash table on error 44/43944/1
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Wed, 15 Jul 2015 12:29:09 +0000 (15:29 +0300)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Wed, 15 Jul 2015 12:29:09 +0000 (15:29 +0300)
Change-Id: I8f860004eb9b8c23c11a5e47899cfdb916529a64
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
uprobe/swap_uprobes.c

index f9ad605..da8274c 100644 (file)
@@ -528,8 +528,11 @@ int swap_register_uprobe(struct uprobe *up)
                           &uprobe_table[hash_ptr(p->addr, UPROBE_HASH_BITS)]);
 
        ret = arm_uprobe(up);
-       if (ret)
+       if (ret) {
+               hlist_del_rcu(&p->hlist);
+               synchronize_rcu();
                remove_uprobe(up);
+       }
 
 out:
        DBPRINTF("out ret = 0x%x\n", ret);