On Sat, Apr 1, 2023 at 4:59 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > Fix s_stream error handling This looks like it should be part of the Subject (missing period). > > Fix 3 error handling issues: > > 1. In ov2680_s_stream(), when pm_runtime_get_sync() fails it will still > have incremented the pm-runtime reference count so we need to call > pm_runtime_put() > > 2. In ov2680_s_stream() sensor->is_streaming should always be set to false > when the sensor is powered-off even on i2c-communication errors. > > 3. In ov2680_probe(), call ov2680_remove() on ov2680_s_config() errors, > so that pm_runtime_disable() is properly called to disable the > runtime-pm which has been enabled before the ov2680_s_config() call. > > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > --- > drivers/staging/media/atomisp/i2c/atomisp-ov2680.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > index 3181276ed027..63de214916f5 100644 > --- a/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > +++ b/drivers/staging/media/atomisp/i2c/atomisp-ov2680.c > @@ -419,7 +419,7 @@ static int ov2680_s_stream(struct v4l2_subdev *sd, int enable) > if (enable) { > ret = pm_runtime_get_sync(sensor->sd.dev); > if (ret < 0) > - goto error_unlock; > + goto error_power_down; > > ret = ov2680_set_mode(sensor); > if (ret) > @@ -447,6 +447,7 @@ static int ov2680_s_stream(struct v4l2_subdev *sd, int enable) > > error_power_down: > pm_runtime_put(sensor->sd.dev); > + sensor->is_streaming = false; > error_unlock: > mutex_unlock(&sensor->input_lock); > return ret; > @@ -644,8 +645,10 @@ static int ov2680_probe(struct i2c_client *client) > pm_runtime_use_autosuspend(dev); > > ret = ov2680_s_config(&sensor->sd); > - if (ret) > + if (ret) { > + ov2680_remove(client); > return ret; > + } > > sensor->sd.flags |= V4L2_SUBDEV_FL_HAS_DEVNODE; > sensor->pad.flags = MEDIA_PAD_FL_SOURCE; > -- > 2.39.1 > -- With Best Regards, Andy Shevchenko