On 05/02/2026 18:31, Maíra Canal wrote:
When vc4_save_hang_state() encounters an early return condition, it
returns without freeing the previously allocated `kernel_state`,
leaking memory.
Add the missing kfree() calls in both early return paths.
Fixes: 214613656b51 ("drm/vc4: Add an interface for capturing the GPU state after a
hang.")
Signed-off-by: Maíra Canal <[email protected]>
---
drivers/gpu/drm/vc4/vc4_gem.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c
index
ab16164b5edaf382b9c4bf1f08766748cac77fcc..f943ff7da28ae528c0fdfac76e989a2d5286d193
100644
--- a/drivers/gpu/drm/vc4/vc4_gem.c
+++ b/drivers/gpu/drm/vc4/vc4_gem.c
@@ -172,6 +172,7 @@ vc4_save_hang_state(struct drm_device *dev)
exec[1] = vc4_first_render_job(vc4);
if (!exec[0] && !exec[1]) {
spin_unlock_irqrestore(&vc4->job_lock, irqflags);
+ kfree(kernel_state);
LGTM, but even better if you can centralize error handling in
vc4_free_hang_state() and point all returns to a single place.
return;
}
@@ -192,6 +193,7 @@ vc4_save_hang_state(struct drm_device *dev)
if (!kernel_state->bo) {
spin_unlock_irqrestore(&vc4->job_lock, irqflags);
+ kfree(kernel_state);
return;
}