[PATCH v2] staging: media: atomisp: fix memory leak of dvs2_coeff

From: Huihui Huang

Date: Thu Apr 16 2026 - 09:17:29 EST


There is a memory leak in
drivers/staging/media/atomisp/pci/atomisp_compat_css20.c.

In atomisp_alloc_dis_coef_buf(), dvs2_coeff is allocated by
ia_css_dvs2_coefficients_allocate() and stored in
asd->params.css_param.dvs2_coeff. If the subsequent
ia_css_dvs2_statistics_allocate() for dvs_stat fails, the function
returns -ENOMEM without freeing the previously allocated dvs2_coeff.

Add the missing ia_css_dvs2_coefficients_free() call and set the
pointer to NULL before returning on the error path.

Signed-off-by: Huihui Huang <hhhuang@xxxxxxxxxx>
---
v2: Reword commit message per review feedback (no code change).
---
drivers/staging/media/atomisp/pci/atomisp_compat_css20.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c b/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c
index be5f37f4a6fd..d3dc84e14877 100644
--- a/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c
+++ b/drivers/staging/media/atomisp/pci/atomisp_compat_css20.c
@@ -1363,8 +1363,11 @@ int atomisp_alloc_dis_coef_buf(struct atomisp_sub_device *asd)
/* DIS projections. */
asd->params.dis_proj_data_valid = false;
asd->params.dvs_stat = ia_css_dvs2_statistics_allocate(dvs_grid);
- if (!asd->params.dvs_stat)
+ if (!asd->params.dvs_stat) {
+ ia_css_dvs2_coefficients_free(asd->params.css_param.dvs2_coeff);
+ asd->params.css_param.dvs2_coeff = NULL;
return -ENOMEM;
+ }

asd->params.dvs_hor_proj_bytes =
dvs_grid->aligned_height * dvs_grid->aligned_width *
--
2.50.1