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 <catalin.marinas@arm.com>
This commit is contained in:
Catalin Marinas 2009-10-28 13:33:11 +00:00
Родитель a6f5aa1ea0
Коммит 0587da40be
1 изменённых файлов: 6 добавлений и 3 удалений

Просмотреть файл

@ -1025,11 +1025,14 @@ static void scan_block(void *_start, void *_end,
* added to the gray_list. * added to the gray_list.
*/ */
object->count++; object->count++;
if (color_gray(object)) if (color_gray(object)) {
list_add_tail(&object->gray_list, &gray_list); list_add_tail(&object->gray_list, &gray_list);
else spin_unlock_irqrestore(&object->lock, flags);
put_object(object); continue;
}
spin_unlock_irqrestore(&object->lock, flags); spin_unlock_irqrestore(&object->lock, flags);
put_object(object);
} }
} }