Received: by 2002:ab2:6857:0:b0:1ef:ffd0:ce49 with SMTP id l23csp2841615lqp; Mon, 25 Mar 2024 10:41:38 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWtuLB2aBBEmALb7X8IuD6LexPJiszJKN4gca4pqny43EkSqiYSksE2RdwhwnhD7ouXu2bNcJyZbgjNgbqB4gZwRxAh+U8n8ZyTWJTXJA== X-Google-Smtp-Source: AGHT+IHb3O5kDBnp0W04AHTfSzbNMJPPMXBfIqSlg5bmmquyDQ6BVFRT7a6849TRh8b/gafzWp/b X-Received: by 2002:a17:902:dacc:b0:1e0:c7b6:ef4a with SMTP id q12-20020a170902dacc00b001e0c7b6ef4amr2474912plx.40.1711388497799; Mon, 25 Mar 2024 10:41:37 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711388497; cv=pass; d=google.com; s=arc-20160816; b=Z/M88f1a4KtIpD3zK8ISX8mDInxheTufe4WyZDfC9EvOJ5uIs2DbOyb7hMir3XoBnj C7ONv9vLk3ierOOL75T4M05cfDTzg/4kcsIrZmfdSlDBOwWB8Ow3iVREQxdh02VpUeMe uE8txpeFEpH2oOUXW23m+rTPt3t/5dlJhs5rxwyFipZSbjy+CyWTx+zO2yWkOaIfZ0+O OO2fUxxUz3ThDqt1115rx9gW761iVFM0MmQMBgKphSJwYI2wzbWqo3R/5Y5B2Eu/Sr/N CuKp9nEcYCD/ZogDEhZkl3D5EA2HreMoBKkMlY/paAPL4g9sU0JG4P57UJDwmNF3PzsR i0og== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:list-unsubscribe:list-subscribe:list-id:precedence :subject:date:from:dkim-signature; bh=yu6CRq784zZk8JmoJH+VcllViInTfNkEV44O9xYOrqY=; fh=bv1vHvxFNB9Qkhg6dawcPWUtHJizj8HByXc/A6r67W0=; b=JZfBE4XycNRmjqz+FOVpBMKvFlOeGNaN8D7EfONTzBq4BGNcoOGFvrUIqpcxB/oAeg r7P3cGNaCKajVBrPYNMn9/wZ6oaOGm9ElVZJOJhrp7gPaEceP3Y1hOI7YskocNCnvXQp j87laC8MGzzxjms+UJBMVktwEtLWXECEfZetRffcKPSrxXMrO4Z6Fk8GH8iCueaVVp4c 73sUMZujO2oHmvBgycrjeR59lNQM5ewxefxOkNYphho9lyXBVOwp7GfregCzovgWo95V P0+rTTYteQiQ9ml/QXqwqFwBpvAyjB7uly9ktI3BtCsBy8RDjkvs/F0dYxCQgs2hahiG 4ebg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=XALqHOUR; arc=pass (i=1 spf=pass spfdomain=chromium.org dkim=pass dkdomain=chromium.org dmarc=pass fromdomain=chromium.org); spf=pass (google.com: domain of linux-kernel+bounces-117473-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-117473-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id y7-20020a17090322c700b001e01f24fcb1si3495743plg.173.2024.03.25.10.41.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 10:41:37 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-117473-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=XALqHOUR; arc=pass (i=1 spf=pass spfdomain=chromium.org dkim=pass dkdomain=chromium.org dmarc=pass fromdomain=chromium.org); spf=pass (google.com: domain of linux-kernel+bounces-117473-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-117473-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 97DB7302151 for ; Mon, 25 Mar 2024 17:33:23 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 95A4E14431C; Mon, 25 Mar 2024 16:31:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="XALqHOUR" Received: from mail-qv1-f52.google.com (mail-qv1-f52.google.com [209.85.219.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 384E91442E4 for ; Mon, 25 Mar 2024 16:31:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711384298; cv=none; b=SOyQaW3Z2D8Cgfs8v3RR0w/BKZq7f7EtukiqOdi2lHWiNljsG02/6fj3vca0FhCjtEcJpw8sTYxb0UVK39U6xbZqyJgJdvU1Cs7Ryfp6kb7qveVjDGT6Z08hlEzptLuiAWxK32keeAdlRcUc+rCJ8b9jqVQ4GSb37gIdy81DS/w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711384298; c=relaxed/simple; bh=IbGWx43paY/eY3BoKH9LIehCJLKILNpJ3miMe4Ay6xU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GQp6hw1JSuSEWcGnTcx6osJsHSrNAET/EK7hoSwD2B+PoaRokzl/RSOmJsUInbZosoGfHnAE7aG4yk/y4rH38JJYdmUe1nRpmSDLKJOv2eE5VCpfsyDrkNYMWtrROMUnUZs/ZmiJSGND48A2ZeIejoaqtBsVaE88FiiEyz07oPM= 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=XALqHOUR; arc=none smtp.client-ip=209.85.219.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 Received: by mail-qv1-f52.google.com with SMTP id 6a1803df08f44-690bd329df2so25521906d6.2 for ; Mon, 25 Mar 2024 09:31:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1711384296; x=1711989096; 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=yu6CRq784zZk8JmoJH+VcllViInTfNkEV44O9xYOrqY=; b=XALqHOURwLxzSrUCmAtzogdBXLS0B10YeY7xXUN84e1uA57vs8G54f9t1Y15lCoT8t WpkWbGRHUb9R29DwN6A/Az5w6p9CJq1wX5t42u6je8wLdJb36RWtA8D8cYPRhDv4E2ll 1pdDG2ZiTdgYbtAaePhd2mdxyCXDYj6DIruk0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711384296; x=1711989096; 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=yu6CRq784zZk8JmoJH+VcllViInTfNkEV44O9xYOrqY=; b=K3qtdCcKbw4VYwcopYMVW87/6WlMdET94MVzbs5kiv1lYRx/R3NBHEAZaVA8H1JUH8 LZ5EuQBbIfR12qcXajeGrjcmfFMeKWcy9SWShtBKZr8mEDByreiC0NAalc3GdIMcIU1Z sdI98Ka182bJ7WbKfUr0CSesOIaHQrximGTbKK/ArmatBCwGGjeXdrbJ3gImSxn+Nr5A giyzty0gAsACkVMCCLf/grIA8+NNSN6+XLjPFp5X5Rz4QXvmZ8lJUtcX3BJLdk2UEpZ0 9yzGf2vAbLwtMbruS14IIFjGZ3kDW5jEt1jW3Tchakp/9R9bE11o1t54L/sq+cUlayUF vm7w== X-Forwarded-Encrypted: i=1; AJvYcCU4G0yPNrm6s2CqaYKiqbm2KcUjqQUmtLTTSyL9SQU7ePymI6y6nYESQTqZ2Ju7aVrzs4qSBUgQzxKy0KtmUMP9DvoMR2GPzVUGVXs/ X-Gm-Message-State: AOJu0YziI3IBe6QF4BN/4xb88YVCc+VJAmTl49DqduVZG8xSkT1xW72U 0ydbDvk7op+hOgCtuAFVwiR4rLiN7QlETb903n8t+Co9ph224cnetTEnLzKDEUwRhSTGd05K1+i OlA== X-Received: by 2002:a05:6214:acc:b0:696:3705:fe5a with SMTP id g12-20020a0562140acc00b006963705fe5amr9938267qvi.7.1711384296101; Mon, 25 Mar 2024 09:31:36 -0700 (PDT) Received: from denia.c.googlers.com (188.173.86.34.bc.googleusercontent.com. [34.86.173.188]) by smtp.gmail.com with ESMTPSA id jr9-20020a0562142a8900b006905c8b37bbsm376330qvb.133.2024.03.25.09.31.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 Mar 2024 09:31:35 -0700 (PDT) From: Ricardo Ribalda Date: Mon, 25 Mar 2024 16:31:33 +0000 Subject: [PATCH v3 1/3] media: uvcvideo: stop stream during unregister 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: 7bit Message-Id: <20240325-guenter-mini-v3-1-c4bc61d84e03@chromium.org> References: <20240325-guenter-mini-v3-0-c4bc61d84e03@chromium.org> In-Reply-To: <20240325-guenter-mini-v3-0-c4bc61d84e03@chromium.org> To: Mauro Carvalho Chehab Cc: Guenter Roeck , Max Staudt , Tomasz Figa , Laurent Pinchart , Alan Stern , Hans Verkuil , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Sean Paul , Ricardo Ribalda , Sakari Ailus X-Mailer: b4 0.12.4 uvc_unregister_video() can be called asynchronously from uvc_disconnect(). If the device is still streaming when that happens, a plethora of race conditions can happen. Make sure that the device has stopped streaming before exiting this function. If the user still holds handles to the driver's file descriptors, any ioctl will return -ENODEV from the v4l2 core. This change make uvc more consistent with the rest of the v4l2 drivers using the vb2_fop_* and vb2_ioctl_* helpers. Suggested-by: Hans Verkuil Signed-off-by: Ricardo Ribalda --- drivers/media/usb/uvc/uvc_driver.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c index bbd90123a4e76..17fc945c8deb6 100644 --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c @@ -1911,8 +1911,19 @@ static void uvc_unregister_video(struct uvc_device *dev) if (!video_is_registered(&stream->vdev)) continue; + /* + * Serialize other access to the stream. + */ + mutex_lock(&stream->mutex); + uvc_queue_streamoff(&stream->queue, stream->type); video_unregister_device(&stream->vdev); video_unregister_device(&stream->meta.vdev); + mutex_unlock(&stream->mutex); + + /* + * Now the vdev is not streaming and all the ioctls will + * return -ENODEV + */ uvc_debugfs_cleanup_stream(stream); } -- 2.44.0.396.g6e790dbe36-goog