From: Catalin Marinas Date: Wed, 28 Oct 2009 13:33:11 +0000 (+0000) Subject: kmemleak: Release the object lock before calling put_object() X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=0587da40be78d3704a48d3e9a619183891727f5f;p=GitHub%2FLineageOS%2Fandroid_kernel_samsung_universal7580.git kmemleak: Release the object lock before calling put_object() The put_object() function may free the object if the use_count dropped to 0. There shouldn't be further accesses to such object unless it is known that the use_count is non-zero. Signed-off-by: Catalin Marinas --- diff --git a/mm/kmemleak.c b/mm/kmemleak.c index 96106358e04..f06c0921e47 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c @@ -1025,11 +1025,14 @@ static void scan_block(void *_start, void *_end, * added to the gray_list. */ object->count++; - if (color_gray(object)) + if (color_gray(object)) { list_add_tail(&object->gray_list, &gray_list); - else - put_object(object); + spin_unlock_irqrestore(&object->lock, flags); + continue; + } + spin_unlock_irqrestore(&object->lock, flags); + put_object(object); } }