]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
kmemleak: do not leak object after tree insertion error
authorSergey Senozhatsky <sergey.senozhatsky@gmail.com>
Wed, 18 Apr 2012 15:44:48 +0000 (16:44 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Thu, 19 Apr 2012 09:10:46 +0000 (10:10 +0100)
In case when tree insertion fails due to already existing object
error, pointer to allocated object gets lost because of overwrite
with lookup_object() return. Free allocated object before object
lookup.

Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
mm/kmemleak.c

index 45eb6217bf38e764bfb65d90f29ae2bb46f77886..5f059935f7bb2ad2fd5eed4c54a111e5289862c6 100644 (file)
@@ -578,6 +578,7 @@ static struct kmemleak_object *create_object(unsigned long ptr, size_t size,
        if (node != &object->tree_node) {
                kmemleak_stop("Cannot insert 0x%lx into the object search tree "
                              "(already existing)\n", ptr);
+               kmem_cache_free(object_cache, object);
                object = lookup_object(ptr, 1);
                spin_lock(&object->lock);
                dump_object_info(object);