]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
media: uvcvideo: Refactor uvc_queue_streamon
authorRicardo Ribalda <ribalda@chromium.org>
Fri, 9 May 2025 18:24:14 +0000 (18:24 +0000)
committerHans Verkuil <hverkuil@xs4all.nl>
Mon, 16 Jun 2025 06:43:23 +0000 (08:43 +0200)
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.pinchart@ideasonboard.com>
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Link: https://lore.kernel.org/r/20250509-uvc-followup-v1-2-73bcde30d2b5@chromium.org
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
drivers/media/usb/uvc/uvc_v4l2.c

index 668a4e9d772c6d91f045ca75e2744b3a6c69da6b..862b4e34e5b629cf324479a9bb59ebe8784ccd5d 100644 (file)
@@ -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;