summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Ribalda <ribalda@chromium.org>2024-12-04 00:20:12 +0300
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2024-12-19 17:44:43 +0300
commitd6b874ff9ce28b7c65606f1d046fd41e39df17ca (patch)
tree9d2ee0191b5c0542f8ba3e995b2da120d4915b76
parent02baaa09d1cb32eaaed74135cab15155ffd7b953 (diff)
downloadlinux-d6b874ff9ce28b7c65606f1d046fd41e39df17ca.tar.xz
media: uvcvideo: Flush the control cache when we get an event
Asynchronous controls trigger an event when they have completed their operation. This can make that the control cached value does not match the value in the device. Let's flush the cache to be on the safe side. Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Link: https://lore.kernel.org/r/20241203-uvc-fix-async-v6-5-26c867231118@chromium.org Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
-rw-r--r--drivers/media/usb/uvc/uvc_ctrl.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
index 21d5c62d1ac1..4e58476d305e 100644
--- a/drivers/media/usb/uvc/uvc_ctrl.c
+++ b/drivers/media/usb/uvc/uvc_ctrl.c
@@ -1622,6 +1622,9 @@ void uvc_ctrl_status_event(struct uvc_video_chain *chain,
mutex_lock(&chain->ctrl_mutex);
+ /* Flush the control cache, the data might have changed. */
+ ctrl->loaded = 0;
+
handle = ctrl->handle;
if (handle)
uvc_ctrl_set_handle(handle, ctrl, NULL);