media: i2c: ov9640: fix missing error handling in probe
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> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
95531e4622
commit
ffe305d261
|
@ -710,14 +710,18 @@ static int ov9640_probe(struct i2c_client *client,
|
||||||
V4L2_CID_VFLIP, 0, 1, 1, 0);
|
V4L2_CID_VFLIP, 0, 1, 1, 0);
|
||||||
v4l2_ctrl_new_std(&priv->hdl, &ov9640_ctrl_ops,
|
v4l2_ctrl_new_std(&priv->hdl, &ov9640_ctrl_ops,
|
||||||
V4L2_CID_HFLIP, 0, 1, 1, 0);
|
V4L2_CID_HFLIP, 0, 1, 1, 0);
|
||||||
|
|
||||||
|
if (priv->hdl.error) {
|
||||||
|
ret = priv->hdl.error;
|
||||||
|
goto ectrlinit;
|
||||||
|
}
|
||||||
|
|
||||||
priv->subdev.ctrl_handler = &priv->hdl;
|
priv->subdev.ctrl_handler = &priv->hdl;
|
||||||
if (priv->hdl.error)
|
|
||||||
return priv->hdl.error;
|
|
||||||
|
|
||||||
priv->clk = v4l2_clk_get(&client->dev, "mclk");
|
priv->clk = v4l2_clk_get(&client->dev, "mclk");
|
||||||
if (IS_ERR(priv->clk)) {
|
if (IS_ERR(priv->clk)) {
|
||||||
ret = PTR_ERR(priv->clk);
|
ret = PTR_ERR(priv->clk);
|
||||||
goto eclkget;
|
goto ectrlinit;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ov9640_video_probe(client);
|
ret = ov9640_video_probe(client);
|
||||||
|
@ -733,7 +737,7 @@ static int ov9640_probe(struct i2c_client *client,
|
||||||
|
|
||||||
eprobe:
|
eprobe:
|
||||||
v4l2_clk_put(priv->clk);
|
v4l2_clk_put(priv->clk);
|
||||||
eclkget:
|
ectrlinit:
|
||||||
v4l2_ctrl_handler_free(&priv->hdl);
|
v4l2_ctrl_handler_free(&priv->hdl);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
Loading…
Reference in New Issue