Hi Javier, On Fri, Aug 31, 2018 at 05:19:06PM +0200, Javier Martinez Canillas wrote: > The driver registers the subdev async in the middle of the probe function > but this has to be done at the very end of the probe function to prevent > registering a device whose probe function could fail (i.e: the clock and > regulators enable can fail, the I2C transfers could return errors, etc). > > It could also lead to a media device driver that is waiting to bound the > v4l2 subdevice to incorrectly expose its media device to userspace, since > the subdev is registered but later its media entity is cleaned up on error. > > Fixes: 3ee47cad3e69 ("media: ov2680: Add Omnivision OV2680 sensor driver") > Signed-off-by: Javier Martinez Canillas <javierm@xxxxxxxxxx> > > --- > > drivers/media/i2c/ov2680.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/drivers/media/i2c/ov2680.c b/drivers/media/i2c/ov2680.c > index f753a1c333ef..2ef920a17278 100644 > --- a/drivers/media/i2c/ov2680.c > +++ b/drivers/media/i2c/ov2680.c > @@ -983,10 +983,6 @@ static int ov2680_v4l2_init(struct ov2680_dev *sensor) > > sensor->sd.ctrl_handler = hdl; > > - ret = v4l2_async_register_subdev(&sensor->sd); > - if (ret < 0) > - goto cleanup_entity; > - > return 0; > > cleanup_entity: > @@ -1096,6 +1092,10 @@ static int ov2680_probe(struct i2c_client *client) > if (ret < 0) > goto error_cleanup; How about instead moving ov2680_check_id() call earlier in probe()? That would seem to be a better fix: the driver should check the device is around before registering anything. > > + ret = v4l2_async_register_subdev(&sensor->sd); > + if (ret < 0) > + goto error_cleanup; > + > dev_info(dev, "ov2680 init correctly\n"); > > return 0; > @@ -1104,7 +1104,6 @@ static int ov2680_probe(struct i2c_client *client) > dev_err(dev, "ov2680 init fail: %d\n", ret); > > media_entity_cleanup(&sensor->sd.entity); > - v4l2_async_unregister_subdev(&sensor->sd); > v4l2_ctrl_handler_free(&sensor->ctrls.handler); > > lock_destroy: -- Regards, Sakari Ailus e-mail: sakari.ailus@xxxxxx