add 'synchronize_sched' in func 'dbi_unregister_kprobe'
authorVyacheslav Cherkashin <v.cherkashin@samsung.com>
Wed, 27 Feb 2013 11:44:03 +0000 (15:44 +0400)
committerVyacheslav Cherkashin <v.cherkashin@samsung.com>
Wed, 27 Feb 2013 11:44:03 +0000 (15:44 +0400)
driver/probes_manager.c
kprobe/dbi_kprobes.c

index cb17ac5..9d3df69 100644 (file)
@@ -177,8 +177,8 @@ register_kernel_probe (kernel_probe_t * probe)
 int
 unregister_kernel_probe (kernel_probe_t * probe)
 {
-       unregister_kernel_jprobe (probe);
-       unregister_kernel_retprobe (probe);
+       unregister_kernel_retprobe(probe);
+       unregister_kernel_jprobe(probe);
        return 0;
 }
 
index 55410cc..1454b41 100644 (file)
@@ -81,7 +81,6 @@ static struct hlist_head kretprobe_inst_table[KPROBE_TABLE_SIZE];
 
 atomic_t kprobe_count;
 
-
 void kretprobe_assert (struct kretprobe_instance *ri, unsigned long orig_ret_address, unsigned long trampoline_address)
 {
        if (!orig_ret_address || (orig_ret_address == trampoline_address)) {
@@ -591,6 +590,11 @@ valid_p:
                        list_del_rcu (&p->list);
                        kfree (old_p);
                }
+
+               if (!in_atomic()) {
+                       synchronize_sched();
+               }
+
                arch_remove_kprobe (p, task);
        }
        else