Re: [PATCH v2] media: i2c: ov5648: Fix lockdep error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux