[media] adp1653: check error code of adp1653_init_controls
Potentially the adp1653_init_controls could return an error. In our case the error was ignored, meanwhile it means incorrect initialization of V4L2 controls. Additionally we have to free control handler structures in case of apd1653_init_controls or media_entity_init failure. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Cc: Sakari Ailus <sakari.ailus@iki.fi> Signed-off-by: Sakari Ailus <sakari.ailus@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
572064280e
commit
31ee95ec2d
1 changed files with 9 additions and 2 deletions
|
@ -429,12 +429,19 @@ static int adp1653_probe(struct i2c_client *client,
|
||||||
flash->subdev.internal_ops = &adp1653_internal_ops;
|
flash->subdev.internal_ops = &adp1653_internal_ops;
|
||||||
flash->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
|
flash->subdev.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE;
|
||||||
|
|
||||||
adp1653_init_controls(flash);
|
ret = adp1653_init_controls(flash);
|
||||||
|
if (ret)
|
||||||
|
goto free_and_quit;
|
||||||
|
|
||||||
ret = media_entity_init(&flash->subdev.entity, 0, NULL, 0);
|
ret = media_entity_init(&flash->subdev.entity, 0, NULL, 0);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
kfree(flash);
|
goto free_and_quit;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
free_and_quit:
|
||||||
|
v4l2_ctrl_handler_free(&flash->ctrls);
|
||||||
|
kfree(flash);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue