diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2009-10-09 10:30:34 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-09 13:28:47 -0700 |
commit | 0d5d1aadc8e299874a6a014d65b6bb903b12424d (patch) | |
tree | dedab8048ff8a62cdbc879960ff994f2b1856368 | |
parent | c1bcd6b327a0c0d5077eb158a600947aac7d124a (diff) | |
download | lwn-0d5d1aadc8e299874a6a014d65b6bb903b12424d.tar.gz lwn-0d5d1aadc8e299874a6a014d65b6bb903b12424d.zip |
kmemleak: Check for NULL pointer returned by create_object()
This patch adds NULL pointer checking in the early_alloc() function.
Reported-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | mm/kmemleak.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/mm/kmemleak.c b/mm/kmemleak.c index a6175180d188..8bf765c4f58d 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -834,11 +834,14 @@ static void early_alloc(struct early_log *log) rcu_read_lock(); object = create_object((unsigned long)log->ptr, log->size, log->min_count, GFP_ATOMIC); + if (!object) + goto out; spin_lock_irqsave(&object->lock, flags); for (i = 0; i < log->trace_len; i++) object->trace[i] = log->trace[i]; object->trace_len = log->trace_len; spin_unlock_irqrestore(&object->lock, flags); +out: rcu_read_unlock(); } |