Received: by 2002:ab2:23c8:0:b0:1f2:fdbc:cb93 with SMTP id a8csp151154lqe; Wed, 27 Mar 2024 01:25:11 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUc3pPJNixIe+HV06+lRuhNL0FJK1UqLxv5UVf1BTn5br8hJNupQRZf04M0Bw6y2hwAjz5Rg8WCA4pEq5Vs5LymmVoR8jDKndL6eDWFhQ== X-Google-Smtp-Source: AGHT+IEmWAs5uW50R6F2QDpD4/SjAbLv2j/7VQOucCWjmVEJsiQqmoNqwoSS1mJ5L+aPfssj+zF1 X-Received: by 2002:a05:622a:1004:b0:430:dde8:9740 with SMTP id d4-20020a05622a100400b00430dde89740mr4400149qte.40.1711527910942; Wed, 27 Mar 2024 01:25:10 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1711527910; cv=pass; d=google.com; s=arc-20160816; b=UeorilXgmNT9AeusabX3DfK9fUBNeCLTItQE/ju+4L5bnqs3QqtihYQduoxZ4L0TSF G2G5xJs6pdtgrOXwoKbNTj4Yd9A+HASJVFCEDg2IOXXfxE4GCfQX1ZeoxZzNHm/YA0Lp gZf+UF5hw9wAz26GbIOwbrx6RH5zLrlJnUOejrJv0yuGhD8Crr7F3zSADRITEix2pTiJ yMrsD5nsTU2X9OzWvTlDlifRLlqS6s7OMNuDTHVVN5rm2RquqjnDIwgJTRzfhDqpgQjv bRvuh9STYB0PCzZIfhzt4NOnwEXsQzT9XkiNkbtQFbIoWr0oVIk/6o5Lj82CwQ7gG+9d 1s8g== 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=Ai46YBz8HiN68mKrnnA8KDNLgzxfKgPE0XmWqjKjYXM=; b=h5an5tO/HmVQV3mcYBPAC8U+kN7Y/gIOSmqakcejazfKwURocvJ++uC3Hqqj5HlAzq Tx2rZ79/p334gwiYCX+tkxUWd6Gn7DZTpxe164ntIAsRnpOUQGkk9NDD89ANIKLjp0jN dxKbqUyuAFBAnxLcZYUGN08S4hdEzvO5MfcczKrjBdtZ948sv/jo1gCOJgPMX0yZ+41v 9maM7h/0CRMoPD4Mj+y/7TjunLs+QrrkdnFBPfbDplmx8x2fjJxJRH38jMW2DX6Diw06 pY31+29KrcQKN7ELvm7GdSZoZA4S0EGOMOeGPHKOLvE83oLjHoIw/nDgtLBqXpF36gJd JRYA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=j195btc+; 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-120526-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-120526-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id c22-20020a05622a025600b004317fdeac60si668685qtx.102.2024.03.27.01.25.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Mar 2024 01:25:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-120526-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=j195btc+; 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-120526-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-120526-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 ny.mirrors.kernel.org (Postfix) with ESMTPS id 9BE4B1C2543C for ; Wed, 27 Mar 2024 08:25:10 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 18FC83309C; Wed, 27 Mar 2024 08:24:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="j195btc+" Received: from mail-qt1-f180.google.com (mail-qt1-f180.google.com [209.85.160.180]) (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 7DD8023D7 for ; Wed, 27 Mar 2024 08:24:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711527892; cv=none; b=CWXULcqNdHNUrEwH4iJLH4p1C4hPHgTDXLcQgPGZgjulHqLIrVKZfYX57A2q3ql1l3WYGZByXn3zFmmY8MqrtvmW6c3dNgshvsWBcXESiW+lmjfmGqZ48yx40f9oxkfvo3izwmgTM+0DzIYM2d02HDB+20N1JGyabnLxJaxwY28= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711527892; c=relaxed/simple; bh=IbGWx43paY/eY3BoKH9LIehCJLKILNpJ3miMe4Ay6xU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZNzW/aDBv9n12Hc/3DSvS46WzEh8nyOO1AYdxXlHfDYiqfPMWxK45SuWauejz3v9sRnJjdEChA7+KJu9ueilA/RH/A74wAWH+flHvdFSOwozU+gY5EuPtbA6eoIahHBt+QNmfno5GZX/fOeOFdb0BHk93Mo0C1RKEPGoZMjTB4I= 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=j195btc+; arc=none smtp.client-ip=209.85.160.180 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-qt1-f180.google.com with SMTP id d75a77b69052e-430ad286ab8so36924821cf.1 for ; Wed, 27 Mar 2024 01:24:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1711527889; x=1712132689; 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=j195btc+VTQAeWheL6eIlXjFDfcR87V3HGPtAkf5AM9y4VKX4MVYtflg7RPLiupkbh SITfTx+3alq059iL6R0ASdTwA6Qr5OePwsrFfDlQGIbT3G4xiaOBOlGLgxVWKgfhUXtD EHgPnYd5nTS4EnKfnRwVR1UmzWHd2ZD72QTOQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1711527889; x=1712132689; 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=N6QkXIIm69OshybY9Xq/3/7MxAklR5/tYiT7uMCKqOI1mYkJGhnaQqFr7HNbT1oyxS iTbI0N6EG+IzHlKs7KiGN9FFaEWVbAnFfUaiLqfvUkYAdJGnIx9Cd/NsvGAejxQfKXTR kQCzxh7+QhG55WnwezVDcE8gqGlI6m4cIdp3ZjjPJe5bUzteOZA8fpXPpTiDZU4S0sg+ pTUg1bKuhdiB4vzOLopPkrd+pIHYiyAUl9KRXGcnHxxQM3i+zNOyOD623KAlGQS1QzjW Ns2PyXGJHkdGBg1vibhpMQGNC8rj46k6FucCHVcMltHwPSlzbgFZ3G1K5VqtiETF3oEB cEAQ== X-Forwarded-Encrypted: i=1; AJvYcCWnvWDssjFUP7VPays6kzDOZ+c0AkHJsFXsyWKptT1PBITCLt6PgIMzr/Z3yjJDegQ+zMgLFZSKbHbE4t/Y1zPM9F8McbDPfKHqXybk X-Gm-Message-State: AOJu0Yzr6AGjNSXfTJr1pwp8jZpIDNc/oSVlQzF2TwHjWELQLXi4yCSz Vap62E6I1+WUDsNvzi67AtNQhMwEd7Ll1mXisGwseMS/y/120Z9IWluKeb/gOw== X-Received: by 2002:a05:622a:2a07:b0:431:80c9:ab17 with SMTP id hc7-20020a05622a2a0700b0043180c9ab17mr683009qtb.29.1711527889256; Wed, 27 Mar 2024 01:24:49 -0700 (PDT) Received: from denia.c.googlers.com (131.65.194.35.bc.googleusercontent.com. [35.194.65.131]) by smtp.gmail.com with ESMTPSA id ca9-20020a05622a1f0900b00430ea220b32sm4581691qtb.71.2024.03.27.01.24.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Mar 2024 01:24:48 -0700 (PDT) From: Ricardo Ribalda Date: Wed, 27 Mar 2024 08:24:44 +0000 Subject: [PATCH v4 1/4] 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: <20240327-guenter-mini-v4-1-49955c198eae@chromium.org> References: <20240327-guenter-mini-v4-0-49955c198eae@chromium.org> In-Reply-To: <20240327-guenter-mini-v4-0-49955c198eae@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