On Fri May 9 18:24:14 2025 +0000, Ricardo Ribalda wrote:
> Do uvc_pm_get before we call uvc_queue_streamon. Although the current
> code is correct, uvc_ioctl_streamon is allways called after uvc_pm_get,
> this change makes the code more resiliant to future changes.
> 
> Suggested-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
> Signed-off-by: Ricardo Ribalda <riba...@chromium.org>
> Reviewed-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
> Link: 
> https://lore.kernel.org/r/20250509-uvc-followup-v1-2-73bcde30d...@chromium.org
> Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
> Signed-off-by: Hans Verkuil <hverk...@xs4all.nl>

Patch committed.

Thanks,
Hans Verkuil

 drivers/media/usb/uvc/uvc_v4l2.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

---

diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
index 668a4e9d772c..862b4e34e5b6 100644
--- a/drivers/media/usb/uvc/uvc_v4l2.c
+++ b/drivers/media/usb/uvc/uvc_v4l2.c
@@ -853,15 +853,16 @@ static int uvc_ioctl_streamon(struct file *file, void *fh,
        if (handle->is_streaming)
                return 0;
 
-       ret = uvc_queue_streamon(&stream->queue, type);
+       ret = uvc_pm_get(stream->dev);
        if (ret)
                return ret;
 
-       ret = uvc_pm_get(stream->dev);
+       ret = uvc_queue_streamon(&stream->queue, type);
        if (ret) {
-               uvc_queue_streamoff(&stream->queue, type);
+               uvc_pm_put(stream->dev);
                return ret;
        }
+
        handle->is_streaming = true;
 
        return 0;

Reply via email to