From 6f26d2559dbe48a4972a692747b759876284550f Mon Sep 17 00:00:00 2001 From: Jesper Juhl Date: Tue, 4 Mar 2008 14:29:00 -0800 Subject: [PATCH] --- yaml --- r: 86811 b: refs/heads/master c: 544adb41077a10d299a1094f12ec55a5843a9bdb h: refs/heads/master i: 86809: 162796f8a6ce565bdda8a0f8f1033cd6b0463a88 86807: 1f9fdab96d00903541f61cd0a7dc53ddd375b798 v: v3 --- [refs] | 2 +- trunk/kernel/marker.c | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/[refs] b/[refs] index 44cf6937bc6d..0fbcbaee18d1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7088655477b51a5a248fa54190388e1283ba7ebf +refs/heads/master: 544adb41077a10d299a1094f12ec55a5843a9bdb diff --git a/trunk/kernel/marker.c b/trunk/kernel/marker.c index 50effc01d9a2..48a4ea5afffd 100644 --- a/trunk/kernel/marker.c +++ b/trunk/kernel/marker.c @@ -698,14 +698,12 @@ int marker_probe_unregister(const char *name, { struct marker_entry *entry; struct marker_probe_closure *old; - int ret = 0; + int ret = -ENOENT; mutex_lock(&markers_mutex); entry = get_marker(name); - if (!entry) { - ret = -ENOENT; + if (!entry) goto end; - } if (entry->rcu_pending) rcu_barrier(); old = marker_entry_remove_probe(entry, probe, probe_private); @@ -713,12 +711,15 @@ int marker_probe_unregister(const char *name, marker_update_probes(); /* may update entry */ mutex_lock(&markers_mutex); entry = get_marker(name); + if (!entry) + goto end; entry->oldptr = old; entry->rcu_pending = 1; /* write rcu_pending before calling the RCU callback */ smp_wmb(); call_rcu(&entry->rcu, free_old_closure); remove_marker(name); /* Ignore busy error message */ + ret = 0; end: mutex_unlock(&markers_mutex); return ret;