diff mbox series

[v3,8/8] media: i2c: ov9640: fix missing error handling in probe

Message ID 95729cb49c520310674050678a94773d665587c7.1544713575.git.petrcvekcz@gmail.com (mailing list archive)
State New, archived
Headers show
Series media: soc_camera: ov9640: switch driver to v4l2_async | expand

Commit Message

Petr Cvek Dec. 13, 2018, 3:39 p.m. UTC
From: Petr Cvek <petrcvekcz@gmail.com>

Control handlers registration lacked error path with
v4l2_ctrl_handler_free() call. Fix it by using goto to alread existing
v4l2_ctrl_handler_free() call.

Signed-off-by: Petr Cvek <petrcvekcz@gmail.com>
---
 drivers/media/i2c/ov9640.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/drivers/media/i2c/ov9640.c b/drivers/media/i2c/ov9640.c
index 9739fa8d433a..c183273fd332 100644
--- a/drivers/media/i2c/ov9640.c
+++ b/drivers/media/i2c/ov9640.c
@@ -710,14 +710,18 @@  static int ov9640_probe(struct i2c_client *client,
 			V4L2_CID_VFLIP, 0, 1, 1, 0);
 	v4l2_ctrl_new_std(&priv->hdl, &ov9640_ctrl_ops,
 			V4L2_CID_HFLIP, 0, 1, 1, 0);
+
+	if (priv->hdl.error) {
+		ret = priv->hdl.error;
+		goto ectrlinit;
+	}
+
 	priv->subdev.ctrl_handler = &priv->hdl;
-	if (priv->hdl.error)
-		return priv->hdl.error;
 
 	priv->clk = v4l2_clk_get(&client->dev, "mclk");
 	if (IS_ERR(priv->clk)) {
 		ret = PTR_ERR(priv->clk);
-		goto eclkget;
+		goto ectrlinit;
 	}
 
 	ret = ov9640_video_probe(client);
@@ -733,7 +737,7 @@  static int ov9640_probe(struct i2c_client *client,
 
 eprobe:
 	v4l2_clk_put(priv->clk);
-eclkget:
+ectrlinit:
 	v4l2_ctrl_handler_free(&priv->hdl);
 
 	return ret;