Messages in this thread Patch in this message | | | From | Jesper Juhl <> | Subject | [PATCH] Don't risk NULL deref in marker | Date | Tue, 26 Feb 2008 00:14:24 +0100 |
| |
get_marker() may return NULL, so test for it.
Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com> ---
diff --git a/kernel/marker.c b/kernel/marker.c index 50effc0..f211f08 100644 --- a/kernel/marker.c +++ b/kernel/marker.c @@ -698,12 +698,11 @@ 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; goto end; } if (entry->rcu_pending) @@ -713,12 +712,16 @@ 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;
| |