summaryrefslogtreecommitdiffstats
path: root/kernel/kprobes.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/kprobes.c')
-rw-r--r--kernel/kprobes.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/kernel/kprobes.c b/kernel/kprobes.c
index 90e98e233647..08e31d863191 100644
--- a/kernel/kprobes.c
+++ b/kernel/kprobes.c
@@ -229,7 +229,7 @@ static int collect_garbage_slots(struct kprobe_insn_cache *c)
229 struct kprobe_insn_page *kip, *next; 229 struct kprobe_insn_page *kip, *next;
230 230
231 /* Ensure no-one is interrupted on the garbages */ 231 /* Ensure no-one is interrupted on the garbages */
232 synchronize_sched(); 232 synchronize_rcu();
233 233
234 list_for_each_entry_safe(kip, next, &c->pages, list) { 234 list_for_each_entry_safe(kip, next, &c->pages, list) {
235 int i; 235 int i;
@@ -1382,7 +1382,7 @@ out:
1382 if (ret) { 1382 if (ret) {
1383 ap->flags |= KPROBE_FLAG_DISABLED; 1383 ap->flags |= KPROBE_FLAG_DISABLED;
1384 list_del_rcu(&p->list); 1384 list_del_rcu(&p->list);
1385 synchronize_sched(); 1385 synchronize_rcu();
1386 } 1386 }
1387 } 1387 }
1388 } 1388 }
@@ -1597,7 +1597,7 @@ int register_kprobe(struct kprobe *p)
1597 ret = arm_kprobe(p); 1597 ret = arm_kprobe(p);
1598 if (ret) { 1598 if (ret) {
1599 hlist_del_rcu(&p->hlist); 1599 hlist_del_rcu(&p->hlist);
1600 synchronize_sched(); 1600 synchronize_rcu();
1601 goto out; 1601 goto out;
1602 } 1602 }
1603 } 1603 }
@@ -1776,7 +1776,7 @@ void unregister_kprobes(struct kprobe **kps, int num)
1776 kps[i]->addr = NULL; 1776 kps[i]->addr = NULL;
1777 mutex_unlock(&kprobe_mutex); 1777 mutex_unlock(&kprobe_mutex);
1778 1778
1779 synchronize_sched(); 1779 synchronize_rcu();
1780 for (i = 0; i < num; i++) 1780 for (i = 0; i < num; i++)
1781 if (kps[i]->addr) 1781 if (kps[i]->addr)
1782 __unregister_kprobe_bottom(kps[i]); 1782 __unregister_kprobe_bottom(kps[i]);
@@ -1966,7 +1966,7 @@ void unregister_kretprobes(struct kretprobe **rps, int num)
1966 rps[i]->kp.addr = NULL; 1966 rps[i]->kp.addr = NULL;
1967 mutex_unlock(&kprobe_mutex); 1967 mutex_unlock(&kprobe_mutex);
1968 1968
1969 synchronize_sched(); 1969 synchronize_rcu();
1970 for (i = 0; i < num; i++) { 1970 for (i = 0; i < num; i++) {
1971 if (rps[i]->kp.addr) { 1971 if (rps[i]->kp.addr) {
1972 __unregister_kprobe_bottom(&rps[i]->kp); 1972 __unregister_kprobe_bottom(&rps[i]->kp);