From nobody Wed Dec 17 08:51:14 2025 Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) (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 742B723D280 for ; Fri, 9 May 2025 18:24:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815058; cv=none; b=tx//L3KBw9D3qR4izl/z6cqhLkozwHZoQWsersK77m0gYNfwOPawuWaeZ2vJVk93AWtx+omFLnbXRCzJ4t39J/IIs7WHcbAuaFbW2nox0ora5M2j7Sv7LScpR5FAUqsPTRU+2ttX6veJXZgtNl9kVjM3dydRSKbE7mCCj1dp98o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815058; c=relaxed/simple; bh=zFV4u4xYrdJXQYQST/NOy93iVerYdoMEvRx9i5izrDc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y16zin0zEXkrzHlLOJOg7nQ3OPaaCAuNUh/FZkyb85YBn6JpSfzdc4gGmkrp5tluzwLvtPfqVKr7pdCWlqbikxJH6eW0L3GuqKkms48nI/aVtO6NA1VJ8+WCZ0wLuYcR8LpNv08kFAZdqxuc0296rHKu06NvXYGXgag4y7wrfnA= 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=Kz93+UpO; arc=none smtp.client-ip=209.85.167.47 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="Kz93+UpO" Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-54d65cb6e8aso3008245e87.1 for ; Fri, 09 May 2025 11:24:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1746815054; x=1747419854; 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=Yi5XaVNppgwZ+7IG1Lz4V8UPUgu4s/f0SGWRQuuh7uw=; b=Kz93+UpOIxMebqw9iGgAs3Sdq2rhRiybIwuuUew88UCNr5zOFaNTJj73KzLLN0IN1D GJL8WUbMDlwmexHov5u0lXN5ReoDYLB/Xi36I5O7QSDoxUnB8eHWuOJWuj1BxNvmLZWE uSYQJYz5l2yDpdQ9buE+fCupqZY4j2lTD3BCY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746815054; x=1747419854; 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=Yi5XaVNppgwZ+7IG1Lz4V8UPUgu4s/f0SGWRQuuh7uw=; b=r66M22Oqlu2jLS7Vu8xuHeAu3Lwr2hsB13ch8cS3pUWJx+5Ia8BwA/jJRR5VY1RjBX GJ1/hsVHbVMxuFGIqY5OcfuNRArn240qQZOsTFtNbxhe3Z7w3Q+VHj6hexjWYj+cRp88 UyP9Bfa5f5D3PKkCsVWOyfyN+dxP99hyYM1R6ynGBSCCbrIJxLfNcj2P0QkSGgYLe/rz JsaMztN5Hp954g6gYVz8GTkvOF72xOXwE8Kngwn6BAnXtGV7QmIxpZNHMIhjdGoIMjpg D9gwQzpoKqpJkMGUUN0AbaPzukB3xaBVawB9+Ml3GKfD9Dv98A1Zlk27Y0EMMjQcH3BB 5wgQ== X-Forwarded-Encrypted: i=1; AJvYcCVGo1aVOClbQgEAPPhg1hiAqtpoy06huZH4/KShQ8h0cNhqGHs/4wG8a0UMQOCCMULruEAn7PxOYESo4s8=@vger.kernel.org X-Gm-Message-State: AOJu0YwEuE87NJa9zSz/PnH2Ul3LR3jiK+/Ro0Ks9spuq2zheRDIin6a EFT25z/96vZY1hCq2Fl5+gRfDasvyEcNdwO625+DxPZYrAY3q8C/3LNp+7RCD1BFqPgA5vQAaCE = X-Gm-Gg: ASbGncsAguwTPQm0aJ15pli+IwP05NckYu8632jB7bzRX2h3InX1KMsn4GwbPGbGbEo s10cMpWir6vldIGvd0itAFvIqlkvf6lIR1Y7av+7gu/FeKtsXzVcAF/YZKDCBvNFUXt4UvW1qRj RRe1ZufmqptgMX9fjAfK2US1T37k+H/J6Mt+lKM2B+141zVqPNBih9J8gX1gxiNvP5cfeU8UFy8 NVrxwby8aiGCpniXrwGq93il1w2hoPc2vTgICrsaJd0G/BR2BrwUHYChvMuKRobO2BYBjkFyHZj PeyyevIiXtVa2b/reWxoH5zk+4W5MlTIFGyKC/5vSiumBEzPJ+dtQ6C34ufMVewSH+4aPG7fiHF V18IlGfEscSzqXZmRwyemFivRLzi4sTU= X-Google-Smtp-Source: AGHT+IHPOHJuwzRwwthAHfX0RVaD2nwsVxCj0w/t87pjwfGTdyTLGs9Grg4VR0ctezRgetwQoyhrqg== X-Received: by 2002:a05:6512:670b:b0:54e:9038:d835 with SMTP id 2adb3069b0e04-54fc67c4734mr1262503e87.20.1746815054485; Fri, 09 May 2025 11:24:14 -0700 (PDT) Received: from ribalda.c.googlers.com (228.231.88.34.bc.googleusercontent.com. [34.88.231.228]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54fc64b6bc9sm349410e87.147.2025.05.09.11.24.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 May 2025 11:24:14 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 09 May 2025 18:24:13 +0000 Subject: [PATCH 1/4] media: uvcvideo: Refactor uvc_ctrl_set_handle() 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: <20250509-uvc-followup-v1-1-73bcde30d2b5@chromium.org> References: <20250509-uvc-followup-v1-0-73bcde30d2b5@chromium.org> In-Reply-To: <20250509-uvc-followup-v1-0-73bcde30d2b5@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 Today uvc_ctrl_set_handle() covers two use-uses: setting the handle and clearing the handle. The only common code between the two cases is the lockdep_assert_held. The code looks cleaner if we split these two usecases in two functions. We also take this opportunity to use pending_async_ctrls from ctrl where possible. Signed-off-by: Ricardo Ribalda Reviewed-by: Laurent Pinchart --- drivers/media/usb/uvc/uvc_ctrl.c | 65 +++++++++++++++++++++---------------= ---- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_ctrl.c b/drivers/media/usb/uvc/uvc_c= trl.c index 44b6513c526421943bb9841fb53dc5f8e9f93f02..26be1d0a1891cf3a9a7489f60f9= a2931c78d3239 100644 --- a/drivers/media/usb/uvc/uvc_ctrl.c +++ b/drivers/media/usb/uvc/uvc_ctrl.c @@ -1812,48 +1812,53 @@ static void uvc_ctrl_send_slave_event(struct uvc_vi= deo_chain *chain, uvc_ctrl_send_event(chain, handle, ctrl, mapping, val, changes); } =20 -static int uvc_ctrl_set_handle(struct uvc_fh *handle, struct uvc_control *= ctrl, - struct uvc_fh *new_handle) +static int uvc_ctrl_set_handle(struct uvc_fh *handle, struct uvc_control *= ctrl) { - lockdep_assert_held(&handle->chain->ctrl_mutex); - - if (new_handle) { - int ret; + int ret; =20 - if (ctrl->handle) - dev_warn_ratelimited(&handle->stream->dev->udev->dev, - "UVC non compliance: Setting an async control with a pending ope= ration."); + lockdep_assert_held(&handle->chain->ctrl_mutex); =20 - if (new_handle =3D=3D ctrl->handle) - return 0; + if (ctrl->handle) { + dev_warn_ratelimited(&handle->stream->dev->udev->dev, + "UVC non compliance: Setting an async control with a pending oper= ation."); =20 - if (ctrl->handle) { - WARN_ON(!ctrl->handle->pending_async_ctrls); - if (ctrl->handle->pending_async_ctrls) - ctrl->handle->pending_async_ctrls--; - ctrl->handle =3D new_handle; - handle->pending_async_ctrls++; + if (ctrl->handle =3D=3D handle) return 0; - } - - ret =3D uvc_pm_get(handle->chain->dev); - if (ret) - return ret; =20 - ctrl->handle =3D new_handle; - handle->pending_async_ctrls++; + WARN_ON(!ctrl->handle->pending_async_ctrls); + if (ctrl->handle->pending_async_ctrls) + ctrl->handle->pending_async_ctrls--; + ctrl->handle =3D handle; + ctrl->handle->pending_async_ctrls++; return 0; } =20 + ret =3D uvc_pm_get(handle->chain->dev); + if (ret) + return ret; + + ctrl->handle =3D handle; + ctrl->handle->pending_async_ctrls++; + return 0; +} + +static int uvc_ctrl_clear_handle(struct uvc_fh *handle, + struct uvc_control *ctrl) +{ + lockdep_assert_held(&handle->chain->ctrl_mutex); + /* Cannot clear the handle for a control not owned by us.*/ if (WARN_ON(ctrl->handle !=3D handle)) return -EINVAL; =20 - ctrl->handle =3D NULL; - if (WARN_ON(!handle->pending_async_ctrls)) + if (WARN_ON(!ctrl->handle->pending_async_ctrls)) { + ctrl->handle =3D NULL; return -EINVAL; - handle->pending_async_ctrls--; + } + + ctrl->handle->pending_async_ctrls--; uvc_pm_put(handle->chain->dev); + ctrl->handle =3D NULL; return 0; } =20 @@ -1871,7 +1876,7 @@ void uvc_ctrl_status_event(struct uvc_video_chain *ch= ain, =20 handle =3D ctrl->handle; if (handle) - uvc_ctrl_set_handle(handle, ctrl, NULL); + uvc_ctrl_clear_handle(handle, ctrl); =20 list_for_each_entry(mapping, &ctrl->info.mappings, list) { s32 value; @@ -2161,7 +2166,7 @@ static int uvc_ctrl_commit_entity(struct uvc_device *= dev, =20 if (!rollback && handle && !ret && ctrl->info.flags & UVC_CTRL_FLAG_ASYNCHRONOUS) - ret =3D uvc_ctrl_set_handle(handle, ctrl, handle); + ret =3D uvc_ctrl_set_handle(handle, ctrl); =20 if (ret < 0 && !rollback) { if (err_ctrl) @@ -3271,7 +3276,7 @@ void uvc_ctrl_cleanup_fh(struct uvc_fh *handle) for (unsigned int i =3D 0; i < entity->ncontrols; ++i) { if (entity->controls[i].handle !=3D handle) continue; - uvc_ctrl_set_handle(handle, &entity->controls[i], NULL); + uvc_ctrl_clear_handle(handle, &entity->controls[i]); } } =20 --=20 2.49.0.1015.ga840276032-goog From nobody Wed Dec 17 08:51:14 2025 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) (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 DEABB23C8A4 for ; Fri, 9 May 2025 18:24:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815058; cv=none; b=dgCJiAJBAYBwuI1YmZ21v598+dlu6go2S/un5NoTTVi/P4qGnq16oJA+Z3XYRWkJN1RPTdH2vTozgUsQ/rrVuVRGf9pTX2D5n4p3VUTBM4BXJJUUYYdHMkGLecst/TcyMyNIPKp737MhfKLPQ+7xnsaTXadae2x5wLn360QaGh8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815058; c=relaxed/simple; bh=WlqhFERSYY876eu6fXODc3hMDt3fXzrYrhbCeMIHbl0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z6yESAJcVWwbvxamLaUVSpEX9H4DsUhApN9lT/CtjamL3Qt0a1d7YVeOvmpdjVAyrmZJfXUFZHfgZ/HZF0T4e+YG7OnhFJWpaBQm5ClNwwn+HXemQaRS3QrIxVNJ1nF3TFa0uG9jXt3+I96pIj+zpSpzOoofk2sXf7oqs/hpEj8= 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=VNa/KW0w; arc=none smtp.client-ip=209.85.167.48 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="VNa/KW0w" Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-54c0fa6d455so2763601e87.1 for ; Fri, 09 May 2025 11:24:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1746815055; x=1747419855; 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=z5MuBF0fz+s4ovvaXx6dw9lnVXB5+San6yqV1OmsO2s=; b=VNa/KW0w9vE2OLZY34beiVM3U04EL47LF2lhGqkuoAJS/lLcAQTcCWts95I0cLpmDq jX6qkcchxgXlCyPDvtlyxKoTndssNKttlCTbIIAGcLwsp6Qgi4kBb3aUp+J77hF44ATG 1b6kg1OfhUBeyRGAksw2IEyNrAowW80hfs9WA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746815055; x=1747419855; 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=z5MuBF0fz+s4ovvaXx6dw9lnVXB5+San6yqV1OmsO2s=; b=GUFLn3iSO+YAEM6kPugedbAUYpH4muNxW9ZFkvMz8nJ1Vw1fpheAenlIxMxgQw8bhN sHBjK69qUJqBFdnIC1uONUdAOBLJFkygVU9wM6/kk+1WAa6PSVUv11+e2CCERTCiQcG5 pyd+kiFlRnQtNDjxE4jNijXgaLKTQNIYs0VZoqX/c6geSVXxZs047HJ+zm6FtxJ6lemG dn/bOhAxYqrL7ox9rB+epKnShuaKVNEG082kEE/1Dx2/Bh5MmH1+xiT39FEWi0Ylc/Vx G5BheS/h/0tkziKPhXkIcgQv01opqwsEQ5rOfbpfIUX4jxl64O48Hg0IgcYXlS81ScNk XFlA== X-Forwarded-Encrypted: i=1; AJvYcCWqqd8NMBCpqI/heKN4F4DZpbiTKiivMJ0RLcJFZzKk3x4sDDnZ2pYWpmfpE0TAK+U4myHaDJ0PZ8OXnoM=@vger.kernel.org X-Gm-Message-State: AOJu0Yy2XelGBiANMUfdlkSbMAk6T+QD6JvJ3HcRJ7G2ToK5ekP4cywb qEErwdImIFI7+UtjxJOt80kwLmu19/e6M1g96kKFk+kadGJOkCbd4N9ABMzNzg== X-Gm-Gg: ASbGncvLRWd1VPXEQSdTb6pceipMjjzllFDt1bNCUCwASM9yTZx+vdd5dEy7HmJLlys Zyh4orjz3R/QgstdfbW2i4OpWrTilVMl4wyH9c39J2qdvTqM2gZIrVogw4ij3VHBA055HO/VkKj qWjtloDAdIOzZnL5etzpvnxKjS56fEEbR/DNSpgRYjnV9lNNAd2thyJ9ILXqWxGQ2MqB1eyB6Se jnkP+iGGaXScSvEMSTDFfFEmORb4YXv3X9Kk8h+AAhWaqpq4wWSO24Tlz/NPq2cv7TuS3JZeN+4 JreYFPzK1FiNiyOdUsEK1TYG08oPOn7HAFOu39+K0MP5sfwQWA7IhiZTG2DJDpaTv2tQrwWPb9R jxK7F+JjwAUN4DsonFrr+BuPABYjN1jPYC+GEWxDzgA== X-Google-Smtp-Source: AGHT+IFNM+/aVwpNnZix2AaOhc8ZTeC4nexkneFN7uiQtkM/9+QW6ZoYqnTUOzndZ0VZRK/TUjRmwQ== X-Received: by 2002:a05:6512:608b:b0:545:2cb6:af31 with SMTP id 2adb3069b0e04-54fc67b8e2emr1787962e87.15.1746815054930; Fri, 09 May 2025 11:24:14 -0700 (PDT) Received: from ribalda.c.googlers.com (228.231.88.34.bc.googleusercontent.com. [34.88.231.228]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54fc64b6bc9sm349410e87.147.2025.05.09.11.24.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 May 2025 11:24:14 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 09 May 2025 18:24:14 +0000 Subject: [PATCH 2/4] media: uvcvideo: Refactor uvc_queue_streamon 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: <20250509-uvc-followup-v1-2-73bcde30d2b5@chromium.org> References: <20250509-uvc-followup-v1-0-73bcde30d2b5@chromium.org> In-Reply-To: <20250509-uvc-followup-v1-0-73bcde30d2b5@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 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 Signed-off-by: Ricardo Ribalda Reviewed-by: Laurent Pinchart --- 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_v= 4l2.c index 668a4e9d772c6d91f045ca75e2744b3a6c69da6b..862b4e34e5b629cf324479a9bb5= 9ebe8784ccd5d 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; =20 - ret =3D uvc_queue_streamon(&stream->queue, type); + ret =3D uvc_pm_get(stream->dev); if (ret) return ret; =20 - ret =3D uvc_pm_get(stream->dev); + ret =3D uvc_queue_streamon(&stream->queue, type); if (ret) { - uvc_queue_streamoff(&stream->queue, type); + uvc_pm_put(stream->dev); return ret; } + handle->is_streaming =3D true; =20 return 0; --=20 2.49.0.1015.ga840276032-goog From nobody Wed Dec 17 08:51:14 2025 Received: from mail-lf1-f43.google.com (mail-lf1-f43.google.com [209.85.167.43]) (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 124A823D2A3 for ; Fri, 9 May 2025 18:24:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815059; cv=none; b=LLDlBKXnLx+yJTcGRaRha5yv7Gdwcu+kc+FXZkJ9CWYMxyKhvwixNBTX08wX+LXbjLgNGG/xhRA8UHE96J6s1qF2Aps7aEgmQw30Uqa7iebJDBuyR2zL1gePyWCBV+EO1LKheEC7jWYizYFZs3AjSKQ3rFv6evl3C3FlbBNvTGI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815059; c=relaxed/simple; bh=ejqJ/gJ8wJ7SrRsxrwHX2ivbzatZEKONS8zjnjdr7Dw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=i8HRM1ZWkFYgm1c5w8jO4Nr/h95oHjaom4M0RXKG6TXluoa4mQslZF4I6O38C0lARZtZJF++R98yoDCcYHt86qIfp8gAwS1MAeCC+SiZ2V8wYFGx1+YKZ0A1ykQNfZlOTnjA0ZtpCC4NL3S47mEmKMJS0sygtCFMNV3MK8Ffkvg= 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=ZybcUMqd; arc=none smtp.client-ip=209.85.167.43 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="ZybcUMqd" Received: by mail-lf1-f43.google.com with SMTP id 2adb3069b0e04-54fc9e3564cso878204e87.2 for ; Fri, 09 May 2025 11:24:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1746815056; x=1747419856; 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=dSG2c/BzhlxE+34h/Hi5JjSdjHGQxrAR1NJF6hxkTe4=; b=ZybcUMqd7iC0yTCtFQkcC/kiG1bJtzfLbHYbDEoiS13St8idSB5fuGB1rm52qlsnqZ 7Rgftleong3+lvy26MkUgr/wsLrutP5lNie0Zfq49EsMGZnDJz/B1GyI9IYb+5b9IddP aYwEp9e+9Pr5no5gzTiKJr2eWS0Np2PLOrui8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746815056; x=1747419856; 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=dSG2c/BzhlxE+34h/Hi5JjSdjHGQxrAR1NJF6hxkTe4=; b=J8rjx7A5g45W2Pb2aUNyMSjrrXYdwV2xPHTlag7bGgj4mVAwHrCGjYSL/9Bf1yaz8X XPBFnzhiywOBD1bMgB9YTTou02RQGb7PvtqXagIt6QA/Z4QI/Rr0p2pIXcVtRaRYSIKQ ByL9dcR1GXNNLx5bNiWsuPkJHhikCO/neEDP18d9LNzBPs+wWyaYq0P02PPYG2vFMpen liWE1nY4kvxpdr+uqZfNa49b2zx8J6GDcCmzhwQnLSYlcwChVupVYwiLXPOtvY06ysea 6U8tAG69NgO0wVFLfA35YZDNw/XHl+vGBjI1UDGgdyQIaHcWwuS9pOc4Q/DfAiix0qNp tp5Q== X-Forwarded-Encrypted: i=1; AJvYcCXPcWJO02S4G+qQunJDVbiKYVtHNzdcnaa+yx5Lnv/ynYjbgo+Uk679Gbdg3wtjl1NJejU73qjM4oA7BX4=@vger.kernel.org X-Gm-Message-State: AOJu0Yxpq6fOwsAPbjEn+4JiQr1k0wBYmbtFYiYvisJRYgPFSA+a0nzb L+2izGfx1QKWulkmCGXP6rkwVBd5NcBPKgUq050K9Ih7YqoHFtkq2vTLSNOfdA== X-Gm-Gg: ASbGnculVlw6Z3zIhuZWnYQYU57DHpL2cyR2DuGkeGVFUXamoMhdBJmvAOqhO7gcEXR zmaru/HrxWPK/x1XqndpimQlFMGcm/D8ztelPWJ5YyxZdOIOlTYMCHduGH+KSzEOzUXup6u34M2 Zii7Gn2c0HBKmmD3hrtidKrxp+7kGJL6kEg0X9ItoEk/GgG5SAHfaVqIXhsurRoJNGqBLr2daFR XvPyC/eDL9bDKqSeJqzQu8KX5xuLtyBDr1qQ8KNbnJMMQtImYYqdZ5J7TN17txHyxMcgwNlqR02 s3NtYIu+gRNVLt7QjZ7tAg71Bo1XWhbR4uYP0iAbheGHJFIyO5IzU+wlqLfoc/dkn+AmogmCXw7 aTW7jxnqMxw/ftjW+Qq/uc2WxOi5FpixGpMNBH7hViQ== X-Google-Smtp-Source: AGHT+IFB3hsuHxjg/fmHgXyAyLViUq48ySyQRa/Fx0lUJgNT2+8kLZlrQ1DZIwrh7vFS3Kz9c4FIAw== X-Received: by 2002:a05:6512:3996:b0:545:1049:eb44 with SMTP id 2adb3069b0e04-54fc67d6211mr1584325e87.36.1746815056100; Fri, 09 May 2025 11:24:16 -0700 (PDT) Received: from ribalda.c.googlers.com (228.231.88.34.bc.googleusercontent.com. [34.88.231.228]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54fc64b6bc9sm349410e87.147.2025.05.09.11.24.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 May 2025 11:24:15 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 09 May 2025 18:24:15 +0000 Subject: [PATCH 3/4] media: uvcvideo: Refactor uvc_v4l2_compat_ioctl32 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: <20250509-uvc-followup-v1-3-73bcde30d2b5@chromium.org> References: <20250509-uvc-followup-v1-0-73bcde30d2b5@chromium.org> In-Reply-To: <20250509-uvc-followup-v1-0-73bcde30d2b5@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 Declaring a variable for doing automatic cleanup is not a very common pattern. Replace the cleanup macro with manual cleanup to make the code simpler. Suggested-by: Laurent Pinchart Signed-off-by: Ricardo Ribalda Reviewed-by: Laurent Pinchart --- drivers/media/usb/uvc/uvc_v4l2.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v= 4l2.c index 862b4e34e5b629cf324479a9bb59ebe8784ccd5d..fe3db03d7458eeb4b9a846ae4ed= 141bb60ea46eb 100644 --- a/drivers/media/usb/uvc/uvc_v4l2.c +++ b/drivers/media/usb/uvc/uvc_v4l2.c @@ -1382,11 +1382,9 @@ static int uvc_v4l2_put_xu_query(const struct uvc_xu= _control_query *kp, #define UVCIOC_CTRL_MAP32 _IOWR('u', 0x20, struct uvc_xu_control_mapping32) #define UVCIOC_CTRL_QUERY32 _IOWR('u', 0x21, struct uvc_xu_control_query32) =20 -DEFINE_FREE(uvc_pm_put, struct uvc_device *, if (_T) uvc_pm_put(_T)) static long uvc_v4l2_compat_ioctl32(struct file *file, unsigned int cmd, unsigned long arg) { - struct uvc_device *uvc_device __free(uvc_pm_put) =3D NULL; struct uvc_fh *handle =3D file->private_data; union { struct uvc_xu_control_mapping xmap; @@ -1399,38 +1397,37 @@ static long uvc_v4l2_compat_ioctl32(struct file *fi= le, if (ret) return ret; =20 - uvc_device =3D handle->stream->dev; - switch (cmd) { case UVCIOC_CTRL_MAP32: ret =3D uvc_v4l2_get_xu_mapping(&karg.xmap, up); if (ret) - return ret; + break; ret =3D uvc_ioctl_xu_ctrl_map(handle->chain, &karg.xmap); if (ret) - return ret; + break; ret =3D uvc_v4l2_put_xu_mapping(&karg.xmap, up); if (ret) - return ret; - + break; break; =20 case UVCIOC_CTRL_QUERY32: ret =3D uvc_v4l2_get_xu_query(&karg.xqry, up); if (ret) - return ret; + break; ret =3D uvc_xu_ctrl_query(handle->chain, &karg.xqry); if (ret) - return ret; + break; ret =3D uvc_v4l2_put_xu_query(&karg.xqry, up); if (ret) - return ret; + break; break; =20 default: - return -ENOIOCTLCMD; + ret =3D -ENOIOCTLCMD; } =20 + uvc_pm_put(handle->stream->dev); + return ret; } #endif --=20 2.49.0.1015.ga840276032-goog From nobody Wed Dec 17 08:51:14 2025 Received: from mail-lf1-f51.google.com (mail-lf1-f51.google.com [209.85.167.51]) (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 8145623E32D for ; Fri, 9 May 2025 18:24:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815060; cv=none; b=MB1KYXeaZtVmGNzhQc2ZrCTvaXtNVEbYtUg3fTkTfZXd02CxYZZ4mgXiX0ozs6qq8vYRCiFf2yzKcrUPc+qcJIlYhnemE6BmdX/l6J6mUmh2r5kiCyK/SZyCckg0MLxQsY7o+QoUrVO/hJnRl5/Dy4SioMS4NDkGPxB/Ad534Bw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746815060; c=relaxed/simple; bh=dmEDUd2MAksdGuyMaIYfV/evhD42SfWsITizphcH7IQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=S6h29G2nc3v8b5jHBarlr6qRTpzpuFLZBwYKRqnLugD4+olFUoYfWge8lbbFBiAFLj3JPt99iTNcW3jiq22m01I4A6cDz4HhmEOb1CUd8o9bRvT7a2tn+ewLBvlfwvK4wgko55ObwdmtqZV7wQn9V2YXoawuQnoyVgJXIcRvhcI= 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=A92b7SEp; arc=none smtp.client-ip=209.85.167.51 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="A92b7SEp" Received: by mail-lf1-f51.google.com with SMTP id 2adb3069b0e04-5493b5bc6e8so3037913e87.2 for ; Fri, 09 May 2025 11:24:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1746815056; x=1747419856; 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=aXSgPFuFz+fNGABAM7JsWHcPwhMV/Um0ycmbxkQJ5u4=; b=A92b7SEp3f9UEn/ns0ATB5v6WT776x7JpWxO0uM7mD8v0I4kmikHIk9W/IAk979AEz ra88l0JKuMjg6WLgDEl7CL0vFypiPu+lHKLk4gAhznOJMnajNedFAIhdOw5jmQHnLdmL v9XLYkaFZybawLuh7X+BUG1dSxi+S7qz6GayM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746815056; x=1747419856; 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=aXSgPFuFz+fNGABAM7JsWHcPwhMV/Um0ycmbxkQJ5u4=; b=AkDVGEoJ81Aj0Z0FpiuGaSDY/dIx1cG4NDoZf8gf1xJ1K92c0d8ggXI48BMDhm+zhy vG5Fx0Kei8AKeun1DoWG2m+W+IsfaIVywJCdiod4O/s5XqzCo3JFfQFnFPvgexHfQFsO +hdc6SoynsgJJkp2ZqzzOk1E/6b+/s3qoTTtwfRLQCeyZJORz0y9LH2EGvoKXlZB3cPD tSi6tCLsjf6yGKUWJnJBp550JY+v4DoOWm2MKv2Xvu9vxktjG8U8XTqoaXfnJx9BLfo4 /OtlthcSAZXoG7QpfIbYggJ/SIyPPFNwbHXOvbTJKTFZfT4YzD2XmET/fq8h4Gb8aoIT lNZA== X-Forwarded-Encrypted: i=1; AJvYcCUhzn/Kf2g5kETM3H0w6+awAO8baFtAJaXf+5xTIfh2Wcgpc1y04tR/rR0zSgHjxA3ycLJHVr1no6Wysy4=@vger.kernel.org X-Gm-Message-State: AOJu0YzxMG1dTVzkyVex0GqmnxdR5V5oICAGzdVSILuBx0tooehGN0Ao oGybcw/Am1gb1c8G/B20hQb39755SDOaby2CSSuP7lBHsOc+IVz6xkY7e3eXeA== X-Gm-Gg: ASbGncvLBAPns+MFLrN6+KNl6cl6eIyJz7FJ5qT5+HfjnksTxKA+ZY7/kZZzPfN+ucN c1GPSUIH6woecTdVv+hhZwzoMwarsE3kuRYrPcsnSq23Dshlw9c7xoWY3ZKfdvJ6LaJ+NY6qACY Om7I5Cdu5lxalvCXVUsAmk1kxA93cx06kTGsXiciJYBRwu6wajgyJh++5jypRO4Mt5tvr3Xq5ya EpUL1bht+PGkXdVOHJAPZl4NIn2xXbsrkFn56I/xbP2FLRXCGw/wTG3OV3xURN59OO3II6MAStm u0El56AYg4R+y7FEem8ud4hhEpmPW6r4XLdVWJIczsv6tfAaDkUf+UMThJBMFVq8PmQhk5RRhfT 08hZs+qzh1iHwpl7MicIrvhyO/FUGjDc= X-Google-Smtp-Source: AGHT+IG1edMScKGbHzfRhfZyEuDSvbr+Wl5F6wdkbHLnOVyRsXgnr8JzOVlmPHkNqFi2Fch4VmkWaA== X-Received: by 2002:a05:6512:3e01:b0:54e:85bc:d150 with SMTP id 2adb3069b0e04-54fc67ec33amr1483266e87.53.1746815056482; Fri, 09 May 2025 11:24:16 -0700 (PDT) Received: from ribalda.c.googlers.com (228.231.88.34.bc.googleusercontent.com. [34.88.231.228]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-54fc64b6bc9sm349410e87.147.2025.05.09.11.24.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 09 May 2025 11:24:16 -0700 (PDT) From: Ricardo Ribalda Date: Fri, 09 May 2025 18:24:16 +0000 Subject: [PATCH 4/4] media: uvcvideo: Populate all errors in uvc_probe() 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: <20250509-uvc-followup-v1-4-73bcde30d2b5@chromium.org> References: <20250509-uvc-followup-v1-0-73bcde30d2b5@chromium.org> In-Reply-To: <20250509-uvc-followup-v1-0-73bcde30d2b5@chromium.org> To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.2 Now we are replacing most of the error codes with -ENODEV. Instead, Populate the error code from the functions called by uvc_probe(). Take this opportunity to replace a generic error code from uvc_scan_device() into something more meaningful. Suggested-by: Laurent Pinchart Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_driver.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc= _driver.c index da24a655ab68cc0957762f2b67387677c22224d1..cdf4bbe582272277a6a95267e97= 52010adc51b6b 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -1866,7 +1866,7 @@ static int uvc_scan_device(struct uvc_device *dev) =20 if (list_empty(&dev->chains)) { dev_info(&dev->udev->dev, "No valid video chain found.\n"); - return -1; + return -ENODEV; } =20 /* Add GPIO entity to the first chain. */ @@ -2239,7 +2239,6 @@ static int uvc_probe(struct usb_interface *intf, /* Parse the Video Class control descriptor. */ ret =3D uvc_parse_control(dev); if (ret < 0) { - ret =3D -ENODEV; uvc_dbg(dev, PROBE, "Unable to parse UVC descriptors\n"); goto error; } @@ -2275,22 +2274,16 @@ static int uvc_probe(struct usb_interface *intf, goto error; =20 /* Scan the device for video chains. */ - if (uvc_scan_device(dev) < 0) { - ret =3D -ENODEV; + if (uvc_scan_device(dev) < 0) goto error; - } =20 /* Initialize controls. */ - if (uvc_ctrl_init_device(dev) < 0) { - ret =3D -ENODEV; + if (uvc_ctrl_init_device(dev) < 0) goto error; - } =20 /* Register video device nodes. */ - if (uvc_register_chains(dev) < 0) { - ret =3D -ENODEV; + if (uvc_register_chains(dev) < 0) goto error; - } =20 #ifdef CONFIG_MEDIA_CONTROLLER /* Register the media device node */ --=20 2.49.0.1015.ga840276032-goog