[PATCH] media: exynos4-is: Free control handler if ISP subdev init fails

From: Wentao Liang

Date: Tue Nov 03 2026 - 04:49:19 EST


fimc_isp_subdev_create() initializes isp->ctrls.handler and creates a
number of standard controls. If any of them cannot be created,
handler->error is set and the function returns after cleaning up the
media entity only. The control handler still owns the memory allocated
for its buckets and for the controls created before the failure, and
neither fimc_isp_subdev_destroy() nor the caller's cleanup runs on this
error path, so that memory is leaked.

Free the control handler before returning the error.

Fixes: 9a761e436843 ("[media] exynos4-is: Add Exynos4x12 FIMC-IS driver")
Cc: stable@xxxxxxxxxxxxxxx
Assisted-by: DeepSeek-V4.1-Flash and OpenAI Codex
Signed-off-by: Wentao Liang <vulab@xxxxxxxxxxx>
---
drivers/media/platform/samsung/exynos4-is/fimc-isp.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/media/platform/samsung/exynos4-is/fimc-isp.c b/drivers/media/platform/samsung/exynos4-is/fimc-isp.c
index a0a9093081dd..7790541a2a7a 100644
--- a/drivers/media/platform/samsung/exynos4-is/fimc-isp.c
+++ b/drivers/media/platform/samsung/exynos4-is/fimc-isp.c
@@ -761,6 +761,7 @@ int fimc_isp_subdev_create(struct fimc_isp *isp)

if (handler->error) {
media_entity_cleanup(&sd->entity);
+ v4l2_ctrl_handler_free(handler);
return handler->error;
}

--
2.34.1