Hi, On Fri 26 Nov 21, 12:48, Hans de Goede wrote: > ov5648_state_init() calls ov5648_state_mipi_configure() which uses > __v4l2_ctrl_s_ctrl[_int64](). This means that sensor->mutex (which > is also sensor->ctrls.handler.lock) must be locked before calling > ov5648_state_init(). > > ov5648_state_mipi_configure() is also used in other places where > the lock is already held so it cannot be changed itself. > > Note this is based on an identical (tested) fix for the ov8865 driver, > this has only been compile-tested. Thanks! Reviewed-by: Paul Kocialkowski <paul.kocialkowski@xxxxxxxxxxx> Paul > Cc: Paul Kocialkowski <paul.kocialkowski@xxxxxxxxxxx> > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > --- > Changes in v2: > - Move the taking of the mutex to inside ov5648_state_init() > --- > drivers/media/i2c/ov5648.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/i2c/ov5648.c b/drivers/media/i2c/ov5648.c > index 947d437ed0ef..01e22c535267 100644 > --- a/drivers/media/i2c/ov5648.c > +++ b/drivers/media/i2c/ov5648.c > @@ -1778,8 +1778,14 @@ static int ov5648_state_configure(struct ov5648_sensor *sensor, > > static int ov5648_state_init(struct ov5648_sensor *sensor) > { > - return ov5648_state_configure(sensor, &ov5648_modes[0], > - ov5648_mbus_codes[0]); > + int ret; > + > + mutex_lock(&sensor->mutex); > + ret = ov5648_state_configure(sensor, &ov5648_modes[0], > + ov5648_mbus_codes[0]); > + mutex_unlock(&sensor->mutex); > + > + return ret; > } > > /* Sensor Base */ > -- > 2.33.1 > -- Paul Kocialkowski, Bootlin Embedded Linux and kernel engineering https://bootlin.com
Attachment:
signature.asc
Description: PGP signature