From nobody Sun Feb 8 17:13:54 2026 Received: from mail-oo1-f42.google.com (mail-oo1-f42.google.com [209.85.161.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C4775204F69 for ; Mon, 2 Dec 2024 14:24:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733149484; cv=none; b=UWsD9u7C3LVRQanS0Q8Ai3YrKWS/tlV4doVvE4au/bYMa+CLfc/aRqeTglPFD+cTEg00k8XdG1/8VkmLkys2k7QyVdojtivy4kvYqtC2HQrvsR7naLnU2Lct7sHexFlM1tsQXWDQIM9BCy2/mLD0PXFutEyAUXtok7Xz7j7lo6I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733149484; c=relaxed/simple; bh=JIoL17arYYY+WJ1P2Tyw3eLMLkgho4uZtx1nVbBKRgo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=iJ9tt9fDldAR0j9twpQlxc6GRVUU6Lj989aG0GjL8aJPOj00vdiCysWPiX/LnXu6FeHMpNrQBfbDarnNNlwOyj97rhEVxjEnXsmRg7H5xz5cU06UOPYyvTu3D+kZdU+6TM1nLZw+jrQQpfDLHAxZ3a1KjlraZf3VIztdeS/Eadg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=jl1mVenA; arc=none smtp.client-ip=209.85.161.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="jl1mVenA" Received: by mail-oo1-f42.google.com with SMTP id 006d021491bc7-5f1e7639391so1342479eaf.0 for ; Mon, 02 Dec 2024 06:24:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1733149481; x=1733754281; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ZlS6BJbN8gylinhy8s0wE1xSPoRGB+PwrEezFLyVemI=; b=jl1mVenAXrfFRzW+U6Kt/gnG11Cn00pN+LhtZ9qNyrBErmT6NwlAPz7lEhwrpvdbT3 AbrW0A/RR9TE73Tu1Oo4tqO8ta7WGOVDw29s7AlCJ99IgIduX35Z0mameiVcwHuoXSTs cf/n75bV8rSubbU0zz5+60r1tiery5qoSo9ss= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733149481; x=1733754281; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ZlS6BJbN8gylinhy8s0wE1xSPoRGB+PwrEezFLyVemI=; b=LqjwE/cMEo8Z+XKoLMyauqT22Gcwz9RZbaFFFPJouDL48IIpA0yWyRsrX8TiNwpHbW I9lNZvtgb4AYpQhSNLURmVvaHkt94lGXZRbSoa1MbxDi9TGNT6MFKTJ2Uv8rqu2KVE5W B2mrHKtoqQrQf8/i6wGVzBv080QsfKiznKP7MzydHdd92DYRFkGzcNpP+mBr5wdsY2n8 1cbS26h6a8YRHUest0NsqZrb9mlgKuXHTP5DvBsJfCE0UKK+DVktkEUQ+5W9QKOufl7F k5nR2kJXSeaI4H0zy+g7ug2YmGnbgYT2pZA792N0QaUAdpGpG/65fc3OtrttmxgoMTMX 88Pw== X-Forwarded-Encrypted: i=1; AJvYcCVANsE4KIa9qeHB/h+wPgQO06ZiCJWv/MhjJ7/hWRz7vmqxnXI4nT/+g55wgsWq+6EUL16HdzihYUPf0bU=@vger.kernel.org X-Gm-Message-State: AOJu0YyxTwJFIQIYsXRKJf8HCxVnlDSz/INw1hldLx4eQ7huqKjtbwqQ UPBAx96bN1cNcNjWUXtOtmVw7gMORqhj8qcIc/5S5mCkXH/WDMq9eB8UBXOc4A== X-Gm-Gg: ASbGncstndGR1r95vrdM0m12sbAb1m/9tc2/CB74mrKbsEDZJtES3A4t+luVkwZWz9y yskxgUI5BZlNlIc6hJAnmMJCh2u26y+hNziGJJIETSp2FQUlzUvefMM4hHg0m3xoXTIkO9ZUOVz a2TyNZ1zkNazmtsR6vbRTWbKpcXfF7xh6dJcd2y8yZCZCZbPUh4kiDOudoiDSIbMQJBGlaxO+5I HhqL/UlpOos6IpxWeLMqEONUsCeqLirgRZFKXdNjxDzLKkOoTuMeIPQmyU+5NyblcYEGUUlMqpu EB5vZhKOsaJbfXvEsFvOnGwU X-Google-Smtp-Source: AGHT+IHf7xfPeTnIxhLY6p/5p9023eGvkBrVh98IJJaw48pna5VKZ8hh5eZx/e2fyBNDJsz/FgZFPg== X-Received: by 2002:a05:6359:7609:b0:1c6:1d01:9ffe with SMTP id e5c5f4694b2df-1cab15b6233mr839794555d.10.1733149480869; Mon, 02 Dec 2024 06:24:40 -0800 (PST) Received: from denia.c.googlers.com (5.236.236.35.bc.googleusercontent.com. [35.236.236.5]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-85be9087890sm179710241.25.2024.12.02.06.24.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2024 06:24:39 -0800 (PST) From: Ricardo Ribalda Date: Mon, 02 Dec 2024 14:24:35 +0000 Subject: [PATCH v5 1/5] media: uvcvideo: Only save async fh if success Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241202-uvc-fix-async-v5-1-6658c1fe312b@chromium.org> References: <20241202-uvc-fix-async-v5-0-6658c1fe312b@chromium.org> In-Reply-To: <20241202-uvc-fix-async-v5-0-6658c1fe312b@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Guennadi Liakhovetski Cc: Hans Verkuil , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda , stable@vger.kernel.org X-Mailer: b4 0.13.0 Now we keep a reference to the active fh for any call to uvc_ctrl_set, regardless if it is an actual set or if it is a just a try or if the device refused the operation. We should only keep the file handle if the device actually accepted applying the operation. Cc: stable@vger.kernel.org Fixes: e5225c820c05 ("media: uvcvideo: Send a control event when a Control = Change interrupt arrives") Suggested-by: Hans de Goede Signed-off-by: Ricardo Ribalda Reviewed-by: Hans de Goede Reviewed-by: Laurent Pinchart --- drivers/media/usb/uvc/uvc_ctrl.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index 4fe26e82e3d1..9a80a7d8e73a 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1811,7 +1811,10 @@ int uvc_ctrl_begin(struct uvc_video_chain *chain) } =20 static int uvc_ctrl_commit_entity(struct uvc_device *dev, - struct uvc_entity *entity, int rollback, struct uvc_control **err_ctrl) + struct uvc_fh *handle, + struct uvc_entity *entity, + int rollback, + struct uvc_control **err_ctrl) { struct uvc_control *ctrl; unsigned int i; @@ -1859,6 +1862,10 @@ static int uvc_ctrl_commit_entity(struct uvc_device = *dev, *err_ctrl =3D ctrl; return ret; } + + if (!rollback && handle && + ctrl->info.flags & UVC_CTRL_FLAG_ASYNCHRONOUS) + ctrl->handle =3D handle; } =20 return 0; @@ -1895,8 +1902,8 @@ int __uvc_ctrl_commit(struct uvc_fh *handle, int roll= back, =20 /* Find the control. */ list_for_each_entry(entity, &chain->entities, chain) { - ret =3D uvc_ctrl_commit_entity(chain->dev, entity, rollback, - &err_ctrl); + ret =3D uvc_ctrl_commit_entity(chain->dev, handle, entity, + rollback, &err_ctrl); if (ret < 0) { if (ctrls) ctrls->error_idx =3D @@ -2046,9 +2053,6 @@ int uvc_ctrl_set(struct uvc_fh *handle, mapping->set(mapping, value, uvc_ctrl_data(ctrl, UVC_CTRL_DATA_CURRENT)); =20 - if (ctrl->info.flags & UVC_CTRL_FLAG_ASYNCHRONOUS) - ctrl->handle =3D handle; - ctrl->dirty =3D 1; ctrl->modified =3D 1; return 0; @@ -2377,7 +2381,7 @@ int uvc_ctrl_restore_values(struct uvc_device *dev) ctrl->dirty =3D 1; } =20 - ret =3D uvc_ctrl_commit_entity(dev, entity, 0, NULL); + ret =3D uvc_ctrl_commit_entity(dev, NULL, entity, 0, NULL); if (ret < 0) return ret; } --=20 2.47.0.338.g60cca15819-goog From nobody Sun Feb 8 17:13:54 2026 Received: from mail-oa1-f52.google.com (mail-oa1-f52.google.com [209.85.160.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DEA27204F87 for ; Mon, 2 Dec 2024 14:24:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733149485; cv=none; b=lWLfnpU+3Qh7qrKj78Z8mDwffsXokTiUG4Oc0R4jD/DS/ifpM0Gx5o9vrYxP6Cxi4dJ5V4DJIJ8Y5aqCdzwYjx6QIHA/iOZylBVIw2T3YEdSLcZtpOtUrjc/1JtpTdkXx3JgalLq/VTHNneK35rHe3Hrwj+KdaThaU6cDT7FbHw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733149485; c=relaxed/simple; bh=2CouL6TauW+OfYTjBFsOKvayyxDlTHWIFYpffgKYGh4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=d51CW776tfx1r89Dpa26ZyUggd3vFrIAO/c8X/yZuRcuXnCMFFnCEeSZZ8HNVfn0S/MR3MDuQnsGZ2qFr1x/3yMCCz3CAdE+8dLG+ANlhFLkZmpvPPZaKGOHgEh7fKCKFqoVkKDT/y189uCbv+Vvu0c7rbr/Xk7ruUi7oEhRnj0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=QQt+Cel/; arc=none smtp.client-ip=209.85.160.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="QQt+Cel/" Received: by mail-oa1-f52.google.com with SMTP id 586e51a60fabf-29e61fcc3d2so914683fac.2 for ; Mon, 02 Dec 2024 06:24:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1733149483; x=1733754283; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=qLNHXjJlr/6qPBJLlmj7xWzEmuF7V3Sn4z0szK5h1CI=; b=QQt+Cel/9pcHXIo351Fm6cSzKXJJH94/WB2pyW+SWXCWffVvlENBc0OnhJU1p7dje8 4xfu8pOaZKteALYVyIaBWsg9a4/DzzLrcf7sUI8p+cpjOuo/WLgurrnTWtb4yIdZ0V31 2ok4xPPtxO9w/VfDXN0WFKwNyd0XL12YBtJjw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733149483; x=1733754283; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qLNHXjJlr/6qPBJLlmj7xWzEmuF7V3Sn4z0szK5h1CI=; b=K1vr6j7V3KxstUWyl5uGecXO57Bo1/olV2QzzZfqEfvmK7WcIJhM7LOI+NTCY0VzCC KxjHIa0alc/PFu027Sf/UxLBWshDaBJWv5O3MOxRBPQzYfzS9itHDtx5Ln6eM1ABCrNa 5Cqk6PZXx8xBPVMhGVE7QzBiaVgbkxaPgIxMeeSkE8hU+zHewutyT79K6bO4+6qCFZtk PWcv8cCgrrmQHzYYAdX620ElVylye+akO4dahMEUvdF+py/LVSLKzOht2DzLmu5i1QxA 9uapANBFC37MPE2geHYLkgsmoVHV6pAqOqmchLj5/X4t56oh1YRSYxzEaPmxroPjMERe 58QA== X-Forwarded-Encrypted: i=1; AJvYcCUfABTEqvEqmPo1kHGgNsamDIyJ6wV5u0EVyjUlbaszgJOfJbl/jElAS36KZKfBBJ4Zc9LEGgfD+uzVk3U=@vger.kernel.org X-Gm-Message-State: AOJu0YwjwQto+td5xWb+4opn4QWIY/HkR5J+iqx7dHzRey7w/o80PLNF CvEunTUpQaW3Bx03ZCkasWwVzCI45UzON+n58dnW0gMgY3u1ZxD10f6KsPWVyw== X-Gm-Gg: ASbGnctzU/IeQkfJQY7FbnJcVwXevw2xFNmlgwtx+xgxZ5qPHuLJ4dYyT3EBFmQNB8b IXpi2R6Ya4EQuLr43c1Ww7cK/kJYqwFh3R6PoNyQ9oBRIT/OiPOjEzyQ9iFAAaYJhhsEOylQiSH 0/IkSG7KvQ/avV52jNxKNwLJC7Sw6eHbjU7E88WV6peEBkEzs5n1+QHL+DUNNoH7ZWM54epj7xp VL9Q7B061VObF2znY6hNZT5oK8qj9WATtxBQEC8Smu17GlbA7SZciFOeDszpcryjmA2i1ChDEzs COUfZGfE27gzMXzVGTBIGJbW X-Google-Smtp-Source: AGHT+IHOmHK950Sz16eLfZ56imS30OV+bUBssh4g96SgnL/6rRx0a78AipUgKMzMa352e4qpARm5UA== X-Received: by 2002:a05:6358:50ca:b0:1b8:3283:ec6e with SMTP id e5c5f4694b2df-1cab169cf8emr614679055d.24.1733149483059; Mon, 02 Dec 2024 06:24:43 -0800 (PST) Received: from denia.c.googlers.com (5.236.236.35.bc.googleusercontent.com. [35.236.236.5]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-85be9087890sm179710241.25.2024.12.02.06.24.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2024 06:24:41 -0800 (PST) From: Ricardo Ribalda Date: Mon, 02 Dec 2024 14:24:36 +0000 Subject: [PATCH v5 2/5] media: uvcvideo: Remove dangling pointers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241202-uvc-fix-async-v5-2-6658c1fe312b@chromium.org> References: <20241202-uvc-fix-async-v5-0-6658c1fe312b@chromium.org> In-Reply-To: <20241202-uvc-fix-async-v5-0-6658c1fe312b@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Guennadi Liakhovetski Cc: Hans Verkuil , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda , stable@vger.kernel.org X-Mailer: b4 0.13.0 When an async control is written, we copy a pointer to the file handle that started the operation. That pointer will be used when the device is done. Which could be anytime in the future. If the user closes that file descriptor, its structure will be freed, and there will be one dangling pointer per pending async control, that the driver will try to use. Clean all the dangling pointers during release(). To avoid adding a performance penalty in the most common case (no async operation), a counter has been introduced with some logic to make sure that it is properly handled. Cc: stable@vger.kernel.org Fixes: e5225c820c05 ("media: uvcvideo: Send a control event when a Control = Change interrupt arrives") Signed-off-by: Ricardo Ribalda Reviewed-by: Hans de Goede --- drivers/media/usb/uvc/uvc_ctrl.c | 52 ++++++++++++++++++++++++++++++++++++= ++-- drivers/media/usb/uvc/uvc_v4l2.c | 2 ++ drivers/media/usb/uvc/uvcvideo.h | 9 ++++++- 3 files changed, 60 insertions(+), 3 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index 9a80a7d8e73a..af1e38f5c6e9 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1579,6 +1579,37 @@ static void uvc_ctrl_send_slave_event(struct uvc_vid= eo_chain *chain, uvc_ctrl_send_event(chain, handle, ctrl, mapping, val, changes); } =20 +static void uvc_ctrl_get_handle(struct uvc_fh *handle, struct uvc_control = *ctrl) +{ + lockdep_assert_held(&handle->chain->ctrl_mutex); + + if (ctrl->handle) + dev_warn_ratelimited(&handle->stream->dev->udev->dev, + "UVC non compliance: Setting an async control with a pending oper= ation."); + + if (handle =3D=3D ctrl->handle) + return; + + if (ctrl->handle) + ctrl->handle->pending_async_ctrls--; + + ctrl->handle =3D handle; + handle->pending_async_ctrls++; +} + +static void uvc_ctrl_put_handle(struct uvc_fh *handle, struct uvc_control = *ctrl) +{ + lockdep_assert_held(&handle->chain->ctrl_mutex); + + if (ctrl->handle !=3D handle) /* Nothing to do here.*/ + return; + + ctrl->handle =3D NULL; + if (WARN_ON(!handle->pending_async_ctrls)) + return; + handle->pending_async_ctrls--; +} + void uvc_ctrl_status_event(struct uvc_video_chain *chain, struct uvc_control *ctrl, const u8 *data) { @@ -1589,7 +1620,8 @@ void uvc_ctrl_status_event(struct uvc_video_chain *ch= ain, mutex_lock(&chain->ctrl_mutex); =20 handle =3D ctrl->handle; - ctrl->handle =3D NULL; + if (handle) + uvc_ctrl_put_handle(handle, ctrl); =20 list_for_each_entry(mapping, &ctrl->info.mappings, list) { s32 value =3D __uvc_ctrl_get_value(mapping, data); @@ -1865,7 +1897,7 @@ static int uvc_ctrl_commit_entity(struct uvc_device *= dev, =20 if (!rollback && handle && ctrl->info.flags & UVC_CTRL_FLAG_ASYNCHRONOUS) - ctrl->handle =3D handle; + uvc_ctrl_get_handle(handle, ctrl); } =20 return 0; @@ -2774,6 +2806,22 @@ int uvc_ctrl_init_device(struct uvc_device *dev) return 0; } =20 +void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) +{ + struct uvc_entity *entity; + + guard(mutex)(&handle->chain->ctrl_mutex); + + if (!handle->pending_async_ctrls) + return; + + list_for_each_entry(entity, &handle->chain->dev->entities, list) + for (unsigned int i =3D 0; i < entity->ncontrols; ++i) + uvc_ctrl_put_handle(handle, &entity->controls[i]); + + WARN_ON(handle->pending_async_ctrls); +} + /* * Cleanup device controls. */ diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v= 4l2.c index 97c5407f6603..b425306a3b8c 100644 --- a/drivers/media/usb/uvc/uvc_v4l2.c +++ b/drivers/media/usb/uvc/uvc_v4l2.c @@ -652,6 +652,8 @@ static int uvc_v4l2_release(struct file *file) =20 uvc_dbg(stream->dev, CALLS, "%s\n", __func__); =20 + uvc_ctrl_cleanup_fh(handle); + /* Only free resources if this is a privileged handle. */ if (uvc_has_privileges(handle)) uvc_queue_release(&stream->queue); diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvi= deo.h index 07f9921d83f2..92ecdd188587 100644 --- a/drivers/media/usb/uvc/uvcvideo.h +++ b/drivers/media/usb/uvc/uvcvideo.h @@ -337,7 +337,11 @@ struct uvc_video_chain { struct uvc_entity *processing; /* Processing unit */ struct uvc_entity *selector; /* Selector unit */ =20 - struct mutex ctrl_mutex; /* Protects ctrl.info */ + struct mutex ctrl_mutex; /* + * Protects ctrl.info, + * ctrl.handle and + * uvc_fh.pending_async_ctrls + */ =20 struct v4l2_prio_state prio; /* V4L2 priority state */ u32 caps; /* V4L2 chain-wide caps */ @@ -612,6 +616,7 @@ struct uvc_fh { struct uvc_video_chain *chain; struct uvc_streaming *stream; enum uvc_handle_state state; + unsigned int pending_async_ctrls; }; =20 struct uvc_driver { @@ -797,6 +802,8 @@ int uvc_ctrl_is_accessible(struct uvc_video_chain *chai= n, u32 v4l2_id, int uvc_xu_ctrl_query(struct uvc_video_chain *chain, struct uvc_xu_control_query *xqry); =20 +void uvc_ctrl_cleanup_fh(struct uvc_fh *handle); + /* Utility functions */ struct usb_host_endpoint *uvc_find_endpoint(struct usb_host_interface *alt= s, u8 epaddr); --=20 2.47.0.338.g60cca15819-goog From nobody Sun Feb 8 17:13:54 2026 Received: from mail-oa1-f54.google.com (mail-oa1-f54.google.com [209.85.160.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0A06B205AAF for ; Mon, 2 Dec 2024 14:24:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733149487; cv=none; b=ROMLMK0XvUDKg1A9L7gpRPuSXmGHaDzVp7awsWsM0aQGheufUkzAR1L4bsUe+uuKRTAIWcmO7K7ddPs1MRMmu2HnUL7n1wy+Oxnh3ovFI9cMHAjtDUUET1P6uvwvl7eVChh5ltxsS48bRh8BqjG+wwCg4IWRcd+zeYupzRrIMdc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733149487; c=relaxed/simple; bh=8mMTjvFDHU6qYXM2tU7l/cSNhCgi8jgy/GoXdIYy7Bo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UbZ98dipIOWJMz7Uv4UIO1yurApyLmQjbKqbOSpEQMNybizVe3i9rixdWll4cFnApnfaXsTrTWVNeWNIK3/2Wt6IQAZuSavqndUEvXf+Dsd+HkcMlQiZjq/TIY8ZNfd5nYyEYlICulS0eOXjhPrCOzKSxE6fx4BbMT13n2HTRB4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=euxp1nGC; arc=none smtp.client-ip=209.85.160.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="euxp1nGC" Received: by mail-oa1-f54.google.com with SMTP id 586e51a60fabf-29e61fcc3d2so914722fac.2 for ; Mon, 02 Dec 2024 06:24:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1733149485; x=1733754285; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=mnebE8+2v8qetjaorjvm129bKYEMI0HgfTeiXkJjeWc=; b=euxp1nGCpJVikS6tJR+UYnjxcGljnUZZHWa/D3Qccy5qI1ykMNw/WqDQvOJNZK2S6j EW3C2akjxZfEBoR86F8YRRa1NBIUe36o4mlcALR5enr9tNStkn7qTEmuJ/OprEdC1w+f 87LdhZxTTh+3+LD0kDjd1R7oGe26AZ1qahQ2g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733149485; x=1733754285; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mnebE8+2v8qetjaorjvm129bKYEMI0HgfTeiXkJjeWc=; b=w//7B/0XlhT/30esalSIvwP2MuMGtWk/4pJHqFAL+H/76ScvdfRlQRnBs3gsYGegRS 0BZf9/rsAXPpoSfqVi7CzNUEJfS+pxXcZz0/iXvMS3Z+xLPMYi+CvDougYY/LWJvBIhv igDTTrITO9zpAHsrPUbDI8blcPhLbjlTSm7RVG34yqMjiIEOvVGFb3qCvzO+j3N+BxVd TCsyEHAU9DLPev62uFk9IlYxkHLsJKkmptJj81MADOBnupAQ7euPf+IEMtcLVJfv6Jwz u6NeMvbT+Zn8rAQP0Lmv2WhsmMCIzJT4oCW3gZfcTp/u7ccVmOVNC7mgvHJ5GdyQartV TUfQ== X-Forwarded-Encrypted: i=1; AJvYcCWuiwNpOSRUyb3HuCYBVdHNUQbeyeJQV3hqM0R4Rg3QiLtgRuXsDq+SVRYK3jT/9r8xPh5/OSTDWe+KorU=@vger.kernel.org X-Gm-Message-State: AOJu0Yywrc5he2kj8EHZ5oylNpVT72ai3DX2VWkJoCxQKBMnYbJPUPCE jfHPGWpiLtxRUxgtZEvnF26WVff0Z8DNZ1qQXl6m93XEegBmA8r0Je4DTh0wJg== X-Gm-Gg: ASbGncs/p6teYnmBmnqEYtxGrhnvncFQcPGBfL0nkZx5dX/7p2qaJd2LaRwrVod8EFR 2duIg46AbMf0shGoy2vsRTc/AQY6h/yKaNc01Z+CUopySxyT3vpCQu3g3UbMjJ1t8bEPuJ3Q99W i0tVPRezvrX/DNV4+oUNd0iRdco2y2t6hBj4KgkSx7tk+Y2xT0pLU0sysE4R2x7XAiSxl67JzoM 7eJIVmkLjz6PuV00kdMmZ2ubIQi4Kkb2IdGs9lgEbvSdSxYJCWJCCG9Th7cGhiThOdqY/bhAfkU G6tXM/REHpwWTcMCnQtZJGMx X-Google-Smtp-Source: AGHT+IG8wtRsazkhHnoGNG6oh5veDC6ueDZxet87nom+g1i/pY5lzKPixDtX55T/kdnxYkUvhY0dZg== X-Received: by 2002:a05:6359:459d:b0:1ca:a872:e461 with SMTP id e5c5f4694b2df-1cab15854d1mr668540455d.3.1733149485090; Mon, 02 Dec 2024 06:24:45 -0800 (PST) Received: from denia.c.googlers.com (5.236.236.35.bc.googleusercontent.com. [35.236.236.5]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-85be9087890sm179710241.25.2024.12.02.06.24.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2024 06:24:44 -0800 (PST) From: Ricardo Ribalda Date: Mon, 02 Dec 2024 14:24:37 +0000 Subject: [PATCH v5 3/5] media: uvcvideo: Annotate lock requirements for uvc_ctrl_set Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241202-uvc-fix-async-v5-3-6658c1fe312b@chromium.org> References: <20241202-uvc-fix-async-v5-0-6658c1fe312b@chromium.org> In-Reply-To: <20241202-uvc-fix-async-v5-0-6658c1fe312b@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Guennadi Liakhovetski Cc: Hans Verkuil , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.13.0 Make it explicit that the function is always called with ctrl_mutex being held. Suggested-by: Laurent Pinchart Reviewed-by: Laurent Pinchart Signed-off-by: Ricardo Ribalda Reviewed-by: Hans de Goede --- drivers/media/usb/uvc/uvc_ctrl.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index af1e38f5c6e9..576e3854be91 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1980,6 +1980,8 @@ int uvc_ctrl_set(struct uvc_fh *handle, s32 max; int ret; =20 + lockdep_assert_held(&chain->ctrl_mutex); + if (__uvc_query_v4l2_class(chain, xctrl->id, 0) >=3D 0) return -EACCES; =20 --=20 2.47.0.338.g60cca15819-goog From nobody Sun Feb 8 17:13:54 2026 Received: from mail-oi1-f179.google.com (mail-oi1-f179.google.com [209.85.167.179]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A1C0205AC4 for ; Mon, 2 Dec 2024 14:24:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733149489; cv=none; b=YbmLvWTZUG2x+mrB06DA7k2BL3JqOcpBHNs/VF0+L7uWDfyKYNYYK+bpk8bCqIzDxKZByecDa+xqdBOXouuH/pimVlfFI7JVpVZCPzKEIAnf94GB3RxQlBQzKMAJKmKSFperMKHN5dkINqq8+PkYK24ZYBHAtcaf+a1c48ZlPNU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733149489; c=relaxed/simple; bh=s/DB0EW2SPaRTypHFdwKgdfZkbgjDIcSlMWC0VeRtOA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZEaD6Wjls6YFE7ICW1NncuD39PMklqRzSgobIYDiNy5YvWptOVpZJQkRbL1T6PdghchmWhfbhiqJq0IGdIHA1eP62g7QSukr8zMmcYJ96fY3Ano9WmzEhPauENl1i32m9dnes73IOCVXOIDBLry8o0XRIDee5eC/TMQsab1Ynxc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=GzElPN2V; arc=none smtp.client-ip=209.85.167.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="GzElPN2V" Received: by mail-oi1-f179.google.com with SMTP id 5614622812f47-3ea55d16d73so1321338b6e.2 for ; Mon, 02 Dec 2024 06:24:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1733149486; x=1733754286; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=6XX9qg9tc+/hZit/CPAJ2FBRiBE/du1gO7Pr4Y7PEr0=; b=GzElPN2VoN9x8w20pGzdXMU2jODgG6rkOLXRlXqhScHEpvJkjOi1KeGbSVDJ0VbUUG Gmm5PL2HnBmBttt/AUkMYtThZ7TKasrAuavFKRSt7PRJj+mrvOVvW96ah2iGuKOAgsFJ Z9oG+y2qOUqEUxxY2VLyMNJuMT/O+7zlCzPFQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733149486; x=1733754286; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6XX9qg9tc+/hZit/CPAJ2FBRiBE/du1gO7Pr4Y7PEr0=; b=uG0XecKiHSmRzc+ytL9YP3jquVfXfFZA1cRU+iZcrDD2uZnLFI8R8L10stYgGzESZx GMN6eGnehUJENwn1mx1Tw3hyvn90yP3eRZmd39G+8hoBvfRHHe+NeImCYShIPWhAxs4n JiDqRjbQpaer09RU2yQfc3Ap5tz0FIYU2Tn1Q093+M+UrNmk61D9SYa8QoNIIR+aUZLz Iy5GVaobD5NHYMxc0FbXBs77+NlNi7Ui2aOUeoMoM6QA0dY1tljT64mbu0p6txSpktDg SOyycMdQ/ZcNyBPToVYThJ/A0RRWE/BvS++vEKChrSlS0m/RtSxrrhLvJPWYJrazkYfA B4gg== X-Forwarded-Encrypted: i=1; AJvYcCU4ekVreAcj9DrQcczhUh05P88SaU7JOI83ywAgxNaPdRhvYuAzbvMdm+35Z9FfWPoAkZvtmUhD9xt8thQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yyk6hirXbi0KpqGGaB2p1cnCKar0EpIy41VCu5GGM7IRQrXQhCP PUXSLWuehL6EfQgDRnIWlA+W0GIg+wKJ0+ymcJMWdphnCtABvHedI6zOyUs3lw== X-Gm-Gg: ASbGncu6IuEemjVqJuVLHkp7irf7ZXdpeMBoxGeVjl4W/XvGrtmGFCvh8sENufscmKc lV8I/g21tvsoTis/qLmveTvZiaeDORZn/u7cJAU0pr6S2WaCV3MBfkZxaHLp1fUnkt124RcBmdW nAgc8y1YAg1IuuLB1RSUo5utUyZ7ETWp3BOTLqGHwIGGQeWh8+G+CxU02N8IY7q31PiLgiVFiw8 YHeRcQeqvVxOoZyyX5h0AmI4VsP3Vz4WdPy4ExZfbVWFv4H9fZaL+2TvgeRJa8La3oAOZZwamii q954VEaLRW6b+eaUaDHDUkO8 X-Google-Smtp-Source: AGHT+IFgO5znn3TOM6ZaburHci+S3FJx/nAZp7WZvG/y937GkzxZ+xTYFExdyNaYVbvBJfDJ07/Zgw== X-Received: by 2002:a05:6358:5f02:b0:1ca:9c5d:1bf with SMTP id e5c5f4694b2df-1cab158543emr937389255d.4.1733149486483; Mon, 02 Dec 2024 06:24:46 -0800 (PST) Received: from denia.c.googlers.com (5.236.236.35.bc.googleusercontent.com. [35.236.236.5]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-85be9087890sm179710241.25.2024.12.02.06.24.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2024 06:24:45 -0800 (PST) From: Ricardo Ribalda Date: Mon, 02 Dec 2024 14:24:38 +0000 Subject: [PATCH v5 4/5] media: uvcvideo: Remove redundant NULL assignment Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241202-uvc-fix-async-v5-4-6658c1fe312b@chromium.org> References: <20241202-uvc-fix-async-v5-0-6658c1fe312b@chromium.org> In-Reply-To: <20241202-uvc-fix-async-v5-0-6658c1fe312b@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Guennadi Liakhovetski Cc: Hans Verkuil , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.13.0 ctrl->handle will only be different than NULL for controls that have mappings. This is because that assignment is only done inside uvc_ctrl_set() for mapped controls. Reviewed-by: Laurent Pinchart Signed-off-by: Ricardo Ribalda Reviewed-by: Hans de Goede --- drivers/media/usb/uvc/uvc_ctrl.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index 576e3854be91..e90bf2aeb5e4 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1672,10 +1672,8 @@ bool uvc_ctrl_status_event_async(struct urb *urb, st= ruct uvc_video_chain *chain, struct uvc_device *dev =3D chain->dev; struct uvc_ctrl_work *w =3D &dev->async_ctrl; =20 - if (list_empty(&ctrl->info.mappings)) { - ctrl->handle =3D NULL; + if (list_empty(&ctrl->info.mappings)) return false; - } =20 w->data =3D data; w->urb =3D urb; --=20 2.47.0.338.g60cca15819-goog From nobody Sun Feb 8 17:13:54 2026 Received: from mail-oa1-f41.google.com (mail-oa1-f41.google.com [209.85.160.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 79F9A205E31 for ; Mon, 2 Dec 2024 14:24:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733149490; cv=none; b=utuD8jrOlRKT4dHBg54FsIfW6Dhkg08hdyazW08eV9iahwrFAqIcBClilhSDUA7Ucj0S7auR/ceEgI17kBCScdEK1/+8QKUggnPVUcA8nOGoRP1mcQOZ3cLxlJmFGa9ulKDY30alyPAduexYDLD4YgZ5tMKuzS2hBPJFTqfnivo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1733149490; c=relaxed/simple; bh=AywEVRIa8VWMmuquTxALkCvhjnUbojSmLJ871LrwGJQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Aewj1xlHduHkrTPfRjPJiBufVntMavQF6++sSKb9V5s+guJd0cWIXFhnXtAKt0ADp55QzkNyrwvFG/ejMqECaxdhIlbTH7S1b5Vbjb2wHz6kG+3mYh0pEHSS2Dc//upXsOzjmJjdB1Qz5czYwV92Db4zB7YOl5+3G67Vn01NwVI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=fcXU1MHM; arc=none smtp.client-ip=209.85.160.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="fcXU1MHM" Received: by mail-oa1-f41.google.com with SMTP id 586e51a60fabf-29e783392bfso241929fac.3 for ; Mon, 02 Dec 2024 06:24:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1733149488; x=1733754288; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=GovaJn86FmnHeAFnjgqTGOhPMZTKviIql5RFEvQWovM=; b=fcXU1MHMRPMn5LDryzdrt2KzjjCKKip1+g8PaY1mnx192vtCVb0kL0uZ7zYMtLlMND bZjfuS0O8aMVWPKUz403KxkpKi6n7upPmRr74QEX7susveFQpQttuDl1vzIeVOxoNqdI 2N2u0pF7iEF+paA8mSLgpF+SqlRGOELyZaDmc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733149488; x=1733754288; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GovaJn86FmnHeAFnjgqTGOhPMZTKviIql5RFEvQWovM=; b=AI2vRnchFeFlRuqlkvn8SigwneIinm7joEt55tsUEzM1AWCIRpDsqICMuJNW1Ly4bU yeLWRBhvZYTQjwh9gda0/85kbKpTxEBponoIJzsE8B4fthZuXzbXDycWo1O5p5nLPcNP jkYbKYU6iRJ00GNuMOYgfInAekn/gQlXkufWyfnXtG2nJ60YFXHdWhTmgV9WfM1sbMl3 gdLF20lWEKgDwjZ8RYguTW3PWeUvA8TPrOdiBMfyMUZgtCYAJmF11LtP6J0X4WJDnzuR uP0gKpUooQSNofbR7mYb1bUzoye0SiMb3fJP81J6HFxEEdoXQNx+J2cEvkcocNfz4pjV bHGQ== X-Forwarded-Encrypted: i=1; AJvYcCVFOg/oAb2AtfxvbySFydb5ct+RrhPiar+GXwMpRURbuU4CToebS+ZudqFRpYwcDNIJ2LCXAOojQq7/Y88=@vger.kernel.org X-Gm-Message-State: AOJu0YwuaQVI6fwUOCsSUn4pnYnyF7ne/1/6mQnKW/l1RsRVuBSOpiKq G8lSHpwot/OC19jyFgQnEfsjDDyLbY4SrOeTlrf6YnktfsaJp0dO/Yo8e0yv4w== X-Gm-Gg: ASbGnctd78Cu6A7dLBWvU7S85K1YIOh/qZ64UjTeHDFl+9dJc7V4ai4TPEUHG9Tinxq eTuPnHoQjnuSNsXL6UIRntGQ8m0xonmzZYixXwQOF0vEpBbF7lD13KExiEXmZu9M09tMZEoPTJ7 b7GTJARHxJUMuoiZz/vqJB2I/EQ1q4BHW/1m0VvpvP4AOkIjmqrVXNvT7Xug4vrczVihSflgLw+ j5g1VOiujIsUPJ1eNy/RJiftNFeOEpxSpeJV66Yp30V2y+wT2CC/uEsGRy46QQ+RLOVUGDr3TZI o/bFs8/DU6z91VGfxd8Jsjwv X-Google-Smtp-Source: AGHT+IEx+ANnkYfSAsAjHxydTAAtBt9M12WJreFy9bqMG2XSO0QA+Yiio2xXJ28N01qURnNZAEOWCA== X-Received: by 2002:a05:6358:e481:b0:1ca:a079:42f with SMTP id e5c5f4694b2df-1cab159b85amr817878755d.5.1733149488534; Mon, 02 Dec 2024 06:24:48 -0800 (PST) Received: from denia.c.googlers.com (5.236.236.35.bc.googleusercontent.com. [35.236.236.5]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-85be9087890sm179710241.25.2024.12.02.06.24.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Dec 2024 06:24:47 -0800 (PST) From: Ricardo Ribalda Date: Mon, 02 Dec 2024 14:24:39 +0000 Subject: [PATCH v5 5/5] media: uvcvideo: Flush the control cache when we get an event Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20241202-uvc-fix-async-v5-5-6658c1fe312b@chromium.org> References: <20241202-uvc-fix-async-v5-0-6658c1fe312b@chromium.org> In-Reply-To: <20241202-uvc-fix-async-v5-0-6658c1fe312b@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Guennadi Liakhovetski Cc: Hans Verkuil , Mauro Carvalho Chehab , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.13.0 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 --- drivers/media/usb/uvc/uvc_ctrl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index e90bf2aeb5e4..75d534072f50 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1672,6 +1672,9 @@ bool uvc_ctrl_status_event_async(struct urb *urb, str= uct uvc_video_chain *chain, struct uvc_device *dev =3D chain->dev; struct uvc_ctrl_work *w =3D &dev->async_ctrl; =20 + /* Flush the control cache, the data might have changed. */ + ctrl->loaded =3D 0; + if (list_empty(&ctrl->info.mappings)) return false; =20 --=20 2.47.0.338.g60cca15819-goog