From nobody Wed Jul 29 04:19:27 2026 Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) (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 45A5234D3B9 for ; Wed, 8 Jul 2026 15:27:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783524460; cv=none; b=JfmV4cgUmvs6TW+epYSrz64oub2WUqngDCFxetVBcPnp71Xqte7fhHkknr6+OuCxL8PdH2B2eozteHY9pFsNM3lT68DC1qyFVIwMZsCRbJA9JN3F6F9gifAp2hK9rCAeA87TYdrsrcT5eMYsOf+z0bfZpdJJzWu/p4/Ig/0f2Cw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783524460; c=relaxed/simple; bh=UDvQV6rFRI3FIaxkx7xY2X+5+gK+CH9bz4CKRg0qTRo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=vC7BtgwCV/udsvyEcXqrlZK1aIlykquScflHArx66Nwmn++5cvVsKA/FxMuOIhKEHnTMdrfEuA9ZDTVcQWWHsDkEdYIpXBOg8ymz/NxRTt6q2lF3RplKYPSj8OIcWsofYuRC2hlLtknFO98HE+1oyDZ31PeqElGozuUfb4Ip+JA= 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=mLGtWp6h; arc=none smtp.client-ip=209.85.208.176 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="mLGtWp6h" Received: by mail-lj1-f176.google.com with SMTP id 38308e7fff4ca-39c7ef2b1e2so3723581fa.1 for ; Wed, 08 Jul 2026 08:27:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1783524457; x=1784129257; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=2nEGKNYfDM9Ah7oR4t0smWiebWNokw1qo2LnrhbkcPM=; b=mLGtWp6hHhbSSHEr8TIcfUfRzy+3EGrRDncOSfoGbi17lYvCvyFxmf15zTiZNgfc3q bb5KGgAER+zBZo737xgCarm32F7ixsIZeT0A0g+JVb69Q7jAoMTGDVctRAxNfz+I3kIO FGVGkwUgwE6flo4jBhpZ2cMsy9G83C5X6WQrY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783524457; x=1784129257; h=cc:to:message-id:content-transfer-encoding:content-type :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=2nEGKNYfDM9Ah7oR4t0smWiebWNokw1qo2LnrhbkcPM=; b=jmQzqrqMYp8sv9W4AWrPcIArWCEeiXGutrxmObR7VoYXfgm4YsX0CsM2wIuWtBih1Q SxjRhtOnZDmUSZ8c99Qyediwz1gHgurEFpytGU/tmCafJafqUxRE0Qv7SlnrEyBUgUCT MnnIBpgBGpv5L0LUbK4/oqLT+QbhJCw3TncycJk5fJNN6ZR4Ne3zEUxcU/SZ26dZ7mN8 /n1zl+kCoJ3Nvaif0/mxiUD8Hh4l4W/ojAd0sISLF1y5sx3MYCViO41s6pzCx62FCxXK IvGnNw0k7AroAhfZTwQU2VxRQReGtSYoBuqikFxDcEdWWRHiE0PyZp8WEMlTtSVTnoSd 38sQ== X-Forwarded-Encrypted: i=1; AHgh+RrdSgSLduR+pulGhoRJKWK6GWXHO/mFEUNJde0oXd/ubQu5Tyb1J2/Hb0hs+GanGM7luDndAM4oWJAPWyc=@vger.kernel.org X-Gm-Message-State: AOJu0YyIpDdQjbh6l506gNkNt3aAXe7fYpnKn4tVVYNG+KWy88Gbx7lN g5FW9ybltBGodB1Gjx0s30TQIlV+RZkNGJ/glxhNBryG8AqGt/FSEp9T/1d6sCO3tg== X-Gm-Gg: AfdE7cnMlrVgCcnPWfo83MDXFOmKQjm6iQLFTvtSSqeEc32ZSr4AFW3uNeJj8AUItJJ Gfjzn0trZaLkDcwmFHSp1i3ZDC2nsC4w/E7ClEsRDJkpplb8NHGTkzCVgEUpMAjSx4ts6nt7+8p YBKmMeeqUu7uKunTbKNdFTO5KdBFjt/wxnlRs/39+Vb3vW1Hang1CtTTGazLaeoCV3u2ncPD9Ms PP4jqZDXBlLwQ0YEk9dxt/FVNgCmbrkF0AReN1dd4zNWppNrpJ5Ze7SjepO+hnnP1aqeIpIUAvm 0Jj5aux19X899/SCgvKkuvV+Ed32lYLeJR+8L+URvRXIBq5P8JoaVqvAd+TnchDedekb9+wNnaI R/gVO8vQD5KMsOtmo656OasJB1dly+CVlv4giByofASv5Md0KkJUSxAcZ4UrOU4bPqekQ1kyBP/ TNmokK8V08ajIdp6Cy34+CI6q9NFBht8un19DDi6w7XdSKBTqz544wU1yN++kQTZc1uglI X-Received: by 2002:a2e:be94:0:b0:39b:2ff8:64ae with SMTP id 38308e7fff4ca-39c798056e0mr7267771fa.9.1783524457569; Wed, 08 Jul 2026 08:27:37 -0700 (PDT) Received: from ribalda.c.googlers.com (151.214.88.34.bc.googleusercontent.com. [34.88.214.151]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-39c7429c4c9sm6430751fa.35.2026.07.08.08.27.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jul 2026 08:27:35 -0700 (PDT) From: Ricardo Ribalda Date: Wed, 08 Jul 2026 15:27:34 +0000 Subject: [PATCH] media: uvcvideo: Explicitly return the metadata buffers 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: <20260708-uvc-flush-meta-v1-1-71b8b18191c8@chromium.org> X-B4-Tracking: v=1; b=H4sIAGZsTmoC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIzMDcwML3dKyZN20nNLiDN3c1JJE3UTTpDQzYwMzEwMzQyWgpoKi1LTMCrC B0bG1tQCYtoAKYAAAAA== X-Change-ID: 20260708-uvc-flush-meta-a5bf63064061 To: Laurent Pinchart , Hans de Goede , Mauro Carvalho Chehab , Guennadi Liakhovetski Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org, Ricardo Ribalda X-Mailer: b4 0.14.3 If we keep the metadata node open, while we close the video node, there is some risk that after reopening the video node the next metadata frame will contain data from two different runs. Please note that although the URB callback will usually flush all the queues when the urbs are poisoned during uvc_video_stop_transfer(), there might be some situations where this is not triggered. Fixes: 088ead255245 ("media: uvcvideo: Add a metadata device node") Cc: stable@vger.kernel.org Reported-by: Hans de Goede Closes: https://lore.kernel.org/linux-media/CANiDSCuO5aEApqHxy6uqZheza7hgdO= kH38sY5YhO_xAxSYAJbg@mail.gmail.com/T/#u Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_queue.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_queue.c b/drivers/media/usb/uvc/uvc_= queue.c index 3c002c8f442f..57397fd793c8 100644 --- a/drivers/media/usb/uvc/uvc_queue.c +++ b/drivers/media/usb/uvc/uvc_queue.c @@ -196,6 +196,7 @@ static void uvc_stop_streaming_video(struct vb2_queue *= vq) { struct uvc_video_queue *queue =3D vb2_get_drv_priv(vq); struct uvc_streaming *stream =3D queue->stream; + struct uvc_video_queue *meta_queue =3D &stream->meta.queue; =20 lockdep_assert_irqs_enabled(); =20 @@ -204,6 +205,15 @@ static void uvc_stop_streaming_video(struct vb2_queue = *vq) uvc_pm_put(stream->dev); =20 uvc_queue_return_buffers(queue, UVC_BUF_STATE_ERROR); + + /* + * The video node acts as the stream manager, if it stops streaming, + * the metadata node also stops producing frames. + * To avoid metadata buffers partially filled by two runs, we need to + * also flush the metadata queue. + */ + if (video_is_registered(&meta_queue->vdev)) + uvc_queue_return_buffers(meta_queue, UVC_BUF_STATE_ERROR); } =20 static void uvc_stop_streaming_meta(struct vb2_queue *vq) --- base-commit: 8dac27bfa2f994ecb11f01a63641527d17d48fc1 change-id: 20260708-uvc-flush-meta-a5bf63064061 Best regards, --=20 Ricardo Ribalda