]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: uvcvideo: Fix event flags in uvc_ctrl_send_events
authorRicardo Ribalda <ribalda@chromium.org>
Thu, 14 Nov 2024 19:10:30 +0000 (19:10 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 13 Mar 2025 11:50:31 +0000 (12:50 +0100)
commit c31cffd5ae2c3d7ef21d9008977a9d117ce7a64e upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/usb/uvc/uvc_ctrl.c

index 050d3342658282c33dc5f0b71dadf9b134dc440a..ecac6dd2b3e4a3ddb40468ae0ba80dd6cc63b80f 100644 (file)
@@ -1511,13 +1511,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;