2.6.32-longterm review patch. If anyone has any objections, please let us know.
------------------ From: Catalin Marinas <[email protected]> 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 <[email protected]> Reported-by: Phil Carmody <[email protected]> Acked-by: Phil Carmody <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]> --- mm/kmemleak.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -1354,9 +1354,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); _______________________________________________ stable mailing list [email protected] http://linux.kernel.org/mailman/listinfo/stable
