]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: rj54n1cb0c: Fix memleak in rj54n1_probe()
authorZhang Shurong <zhang_shurong@foxmail.com>
Tue, 24 Jun 2025 08:27:24 +0000 (16:27 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Oct 2025 09:56:30 +0000 (11:56 +0200)
[ Upstream commit fda55673ecdabf25f5ecc61b5ab17239257ac252 ]

rj54n1_probe() won't clean all the allocated resources in fail
path, which may causes the memleaks. Add v4l2_ctrl_handler_free() to
prevent memleak.

Fixes: f187352dcd45 ("media: i2c: Copy rj54n1cb0c soc_camera sensor driver")
Signed-off-by: Zhang Shurong <zhang_shurong@foxmail.com>
Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/media/i2c/rj54n1cb0c.c

index 1c3502f34cd37f2ab88cafe4d6760557d5355794..86f4971222ba7ebd6769d5da4c801144769f811b 100644 (file)
@@ -1332,10 +1332,13 @@ static int rj54n1_probe(struct i2c_client *client,
                        V4L2_CID_GAIN, 0, 127, 1, 66);
        v4l2_ctrl_new_std(&rj54n1->hdl, &rj54n1_ctrl_ops,
                        V4L2_CID_AUTO_WHITE_BALANCE, 0, 1, 1, 1);
-       rj54n1->subdev.ctrl_handler = &rj54n1->hdl;
-       if (rj54n1->hdl.error)
-               return rj54n1->hdl.error;
 
+       if (rj54n1->hdl.error) {
+               ret = rj54n1->hdl.error;
+               goto err_free_ctrl;
+       }
+
+       rj54n1->subdev.ctrl_handler = &rj54n1->hdl;
        rj54n1->clk_div         = clk_div;
        rj54n1->rect.left       = RJ54N1_COLUMN_SKIP;
        rj54n1->rect.top        = RJ54N1_ROW_SKIP;