aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorRicardo Ribalda <ribalda@chromium.org>2024-11-14 19:10:30 +0000
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2024-12-19 14:44:43 +0000
commitc31cffd5ae2c3d7ef21d9008977a9d117ce7a64e (patch)
treef0005405f634a6cff285a1db22888c424d4c5030
parentmedia: uvcvideo: Fix deadlock during uvc_probe (diff)
downloadwireguard-linux-c31cffd5ae2c3d7ef21d9008977a9d117ce7a64e.tar.xz
wireguard-linux-c31cffd5ae2c3d7ef21d9008977a9d117ce7a64e.zip
media: uvcvideo: Fix event flags in uvc_ctrl_send_events
If there is an event that needs the V4L2_EVENT_CTRL_CH_FLAGS flag, all the following events will have that flag, regardless if they need it or not. This is because we keep using the same variable all the time and we do not reset its original value. Cc: stable@vger.kernel.org Fixes: 805e9b4a06bf ("[media] uvcvideo: Send control change events for slave ctrls when the master changes") Signed-off-by: Ricardo Ribalda <ribalda@chromium.org> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Link: https://lore.kernel.org/r/20241114-uvc-roi-v15-1-64cfeb56b6f8@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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_ctrl.c
index 4fe26e82e3d1..bab9fdac98e6 100644
--- a/drivers/media/usb/uvc/uvc_ctrl.c
+++ b/drivers/media/usb/uvc/uvc_ctrl.c
@@ -1673,13 +1673,13 @@ static void uvc_ctrl_send_events(struct uvc_fh *handle,
{
struct uvc_control_mapping *mapping;
struct uvc_control *ctrl;
- u32 changes = V4L2_EVENT_CTRL_CH_VALUE;
unsigned int i;
unsigned int j;
for (i = 0; i < xctrls_count; ++i) {
- ctrl = uvc_find_control(handle->chain, xctrls[i].id, &mapping);
+ u32 changes = V4L2_EVENT_CTRL_CH_VALUE;
+ ctrl = uvc_find_control(handle->chain, xctrls[i].id, &mapping);
if (ctrl->info.flags & UVC_CTRL_FLAG_ASYNCHRONOUS)
/* Notification will be sent from an Interrupt event. */
continue;