Re: [PATCH for v6.14] media: rtl2832_sdr: assign vb2 lock before vb2_queue_init

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

 



Em Mon, 24 Feb 2025 15:40:58 +0100
Hans Verkuil <hverkuil@xxxxxxxxx> escreveu:

> Commit c780d01cf1a6 ("media: vb2: vb2_core_queue_init(): sanity check lock and
> wait_prepare/finish") added a sanity check to ensure that if there are no
> wait_prepare/finish callbacks set by the driver, then the vb2_queue lock must
> be set, since otherwise the vb2 core cannot do correct locking.
> 
> The rtl2832_sdr.c triggered this warning: it turns out that while the driver
> does set this lock, it sets it too late. So move it up to before the
> vb2_queue_init() call.
> 
> Reported-by: Arthur Marsh <arthur.marsh@xxxxxxxxxxxxxxxx>
> Fixes: 8fcd2795d22a ("media: rtl2832_sdr: drop vb2_ops_wait_prepare/finish")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Hans Verkuil <hverkuil@xxxxxxxxx>

Patch looks good to me. As Arthur already tested, it sounds ready to go.

Feel free to pick it and merge if you want:

Reviewed-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx>

Otherwise, I'll try to do it later this week.

> ---
> Arthur, it would be great if you can test this patch!
> 
> Regards,
> 
> 	Hans
> ---
> diff --git a/drivers/media/dvb-frontends/rtl2832_sdr.c b/drivers/media/dvb-frontends/rtl2832_sdr.c
> index 05254d8717db..0357624968f1 100644
> --- a/drivers/media/dvb-frontends/rtl2832_sdr.c
> +++ b/drivers/media/dvb-frontends/rtl2832_sdr.c
> @@ -1363,6 +1363,7 @@ static int rtl2832_sdr_probe(struct platform_device *pdev)
>  	dev->vb_queue.ops = &rtl2832_sdr_vb2_ops;
>  	dev->vb_queue.mem_ops = &vb2_vmalloc_memops;
>  	dev->vb_queue.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC;
> +	dev->vb_queue.lock = &dev->vb_queue_lock;
>  	ret = vb2_queue_init(&dev->vb_queue);
>  	if (ret) {
>  		dev_err(&pdev->dev, "Could not initialize vb2 queue\n");
> @@ -1421,7 +1422,6 @@ static int rtl2832_sdr_probe(struct platform_device *pdev)
>  	/* Init video_device structure */
>  	dev->vdev = rtl2832_sdr_template;
>  	dev->vdev.queue = &dev->vb_queue;
> -	dev->vdev.queue->lock = &dev->vb_queue_lock;
>  	video_set_drvdata(&dev->vdev, dev);
> 
>  	/* Register the v4l2_device structure */
> 




[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