From 288dbb07e9b5814277ce3663b02c8428101f42d7 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Tue, 30 Sep 2008 01:51:12 -0400 Subject: [PATCH] --- yaml --- r: 116634 b: refs/heads/master c: 9a1e9693f534174945154197fec4ec92f168ce21 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/tracepoint.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index f82f038ba04b..4196c0df5ea5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ca2db6cf30d6a45798b7a760d0c4f7735b16799d +refs/heads/master: 9a1e9693f534174945154197fec4ec92f168ce21 diff --git a/trunk/kernel/tracepoint.c b/trunk/kernel/tracepoint.c index db39961a0d03..f2b7c28a4708 100644 --- a/trunk/kernel/tracepoint.c +++ b/trunk/kernel/tracepoint.c @@ -356,6 +356,8 @@ int tracepoint_probe_register(const char *name, void *probe) mutex_lock(&tracepoints_mutex); entry = get_tracepoint(name); WARN_ON(!entry); + if (entry->rcu_pending) + rcu_barrier_sched(); tracepoint_entry_free_old(entry, old); end: mutex_unlock(&tracepoints_mutex); @@ -392,6 +394,8 @@ int tracepoint_probe_unregister(const char *name, void *probe) entry = get_tracepoint(name); if (!entry) goto end; + if (entry->rcu_pending) + rcu_barrier_sched(); tracepoint_entry_free_old(entry, old); remove_tracepoint(name); /* Ignore busy error message */ ret = 0;