diff mbox series

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

Message ID 51010d80-56a6-4803-82bb-6632ca7f1ae2@xs4all.nl (mailing list archive)
State New
Headers show
Series [for,v6.14] media: rtl2832_sdr: assign vb2 lock before vb2_queue_init | expand

Commit Message

Hans Verkuil Feb. 24, 2025, 2:40 p.m. UTC
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@internode.on.net>
Fixes: 8fcd2795d22a ("media: rtl2832_sdr: drop vb2_ops_wait_prepare/finish")
Cc: stable@vger.kernel.org
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
---
Arthur, it would be great if you can test this patch!

Regards,

	Hans
---
diff mbox series

Patch

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 */