[02/85] kmemleak: Do not return a pointer to an object that kmemleak did not get

From: Greg KH
Date: Thu Jun 16 2011 - 03:10:11 EST


2.6.33-longterm review patch. If anyone has any objections, please let us know.

------------------

From: Catalin Marinas <catalin.marinas@xxxxxxx>

commit 52c3ce4ec5601ee383a14f1485f6bac7b278896e upstream.

The kmemleak_seq_next() function tries to get an object (and increment
its use count) before returning it. If it could not get the last object
during list traversal (because it may have been freed), the function
should return NULL rather than a pointer to such object that it did not
get.

Signed-off-by: Catalin Marinas <catalin.marinas@xxxxxxx>
Reported-by: Phil Carmody <ext-phil.2.carmody@xxxxxxxxx>
Acked-by: Phil Carmody <ext-phil.2.carmody@xxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxx>

---
mm/kmemleak.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

--- a/mm/kmemleak.c
+++ b/mm/kmemleak.c
@@ -1369,9 +1369,12 @@ static void *kmemleak_seq_next(struct se
++(*pos);

list_for_each_continue_rcu(n, &object_list) {
- next_obj = list_entry(n, struct kmemleak_object, object_list);
- if (get_object(next_obj))
+ struct kmemleak_object *obj =
+ list_entry(n, struct kmemleak_object, object_list);
+ if (get_object(obj)) {
+ next_obj = obj;
break;
+ }
}

put_object(prev_obj);


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/