[PATCH v2 1/9] media: uvcvideo: Refactor uvc_queue_streamon
From: Ricardo Ribalda
Date: Mon Jun 02 2025 - 09:06:50 EST
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@xxxxxxxxxxxxxxxx>
Signed-off-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx>
Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
Link: https://lore.kernel.org/r/20250509-uvc-followup-v1-2-73bcde30d2b5@xxxxxxxxxxxx
Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx>
---
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 668a4e9d772c6d91f045ca75e2744b3a6c69da6b..862b4e34e5b629cf324479a9bb59ebe8784ccd5d 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;
--
2.49.0.1266.g31b7d2e469-goog