]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: i2c: ov8856: free control handler on error in ov8856_init_controls()
authorAlexander Koskovich <akoskovich@pm.me>
Thu, 12 Mar 2026 17:16:20 +0000 (17:16 +0000)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Tue, 24 Mar 2026 10:58:02 +0000 (11:58 +0100)
The control handler wasn't freed if adding controls failed, add an error
exit label and convert the existing error return to use it.

Fixes: 879347f0c258 ("media: ov8856: Add support for OV8856 sensor")
Cc: stable@vger.kernel.org
Signed-off-by: Alexander Koskovich <akoskovich@pm.me>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/i2c/ov8856.c

index e2998cfa0d18a37d18ab9d05c22c570c981a8e84..dd01e1d515ff6d715de3dc4676365ad680ff4117 100644 (file)
@@ -1951,12 +1951,18 @@ static int ov8856_init_controls(struct ov8856 *ov8856)
                          V4L2_CID_HFLIP, 0, 1, 1, 0);
        v4l2_ctrl_new_std(ctrl_hdlr, &ov8856_ctrl_ops,
                          V4L2_CID_VFLIP, 0, 1, 1, 0);
-       if (ctrl_hdlr->error)
-               return ctrl_hdlr->error;
+       if (ctrl_hdlr->error) {
+               ret = ctrl_hdlr->error;
+               goto err_ctrl_handler_free;
+       }
 
        ov8856->sd.ctrl_handler = ctrl_hdlr;
 
        return 0;
+
+err_ctrl_handler_free:
+       v4l2_ctrl_handler_free(ctrl_hdlr);
+       return ret;
 }
 
 static void ov8856_update_pad_format(struct ov8856 *ov8856,