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:
Родитель
a6f5aa1ea0
Коммит
0587da40be
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче