From: Vyacheslav Cherkashin Date: Wed, 27 Feb 2013 11:44:03 +0000 (+0400) Subject: add 'synchronize_sched' in func 'dbi_unregister_kprobe' X-Git-Tag: accepted/tizen/mobile/20160407.001200~784^2~5 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=0c7cf421e96e15cc01ca968e42a9d58860323a91;p=platform%2Fkernel%2Fswap-modules.git add 'synchronize_sched' in func 'dbi_unregister_kprobe' --- diff --git a/driver/probes_manager.c b/driver/probes_manager.c index cb17ac5..9d3df69 100644 --- a/driver/probes_manager.c +++ b/driver/probes_manager.c @@ -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; } diff --git a/kprobe/dbi_kprobes.c b/kprobe/dbi_kprobes.c index 55410cc..1454b41 100644 --- a/kprobe/dbi_kprobes.c +++ b/kprobe/dbi_kprobes.c @@ -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