mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-09 12:17:12 +09:00
kmemleak: Do not return a pointer to an object that kmemleak did not get
commit 52c3ce4ec5 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@arm.com>
Reported-by: Phil Carmody <ext-phil.2.carmody@nokia.com>
Acked-by: Phil Carmody <ext-phil.2.carmody@nokia.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
66e69865f3
commit
b2300b3b5d
@@ -1354,9 +1354,12 @@ static void *kmemleak_seq_next(struct seq_file *seq, void *v, loff_t *pos)
|
||||
++(*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);
|
||||
|
||||
Reference in New Issue
Block a user