Received: by 2002:ab2:60d1:0:b0:1f7:5705:b850 with SMTP id i17csp1246421lqm; Thu, 2 May 2024 09:03:38 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUj+M3+doN4lHsjGoV92lYdlufjP0le/42B5eNb39v/5CLpH5igk88dDk9Y4cjFXB1mqe7MfDTcN6WQ8KDXHnIGALlc/oCtGCtrIBAQtQ== X-Google-Smtp-Source: AGHT+IEUriiy8uq4BeL2m7lrZG0riUC0ACnwaxSuotTRdwk+/4hGjvW9eyZmHiYPjkgpGThr9VZJ X-Received: by 2002:a05:6a20:c119:b0:1a8:367c:9b73 with SMTP id bh25-20020a056a20c11900b001a8367c9b73mr58222pzb.59.1714665818429; Thu, 02 May 2024 09:03:38 -0700 (PDT) Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id b71-20020a63344a000000b005e425bf0f0esi113678pga.830.2024.05.02.09.03.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 May 2024 09:03:38 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-166670-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@ideasonboard.com header.s=mail header.b=jnSMlcIt; arc=fail (body hash mismatch); spf=pass (google.com: domain of linux-kernel+bounces-166670-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-166670-linux.lists.archive=gmail.com@vger.kernel.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 sy.mirrors.kernel.org (Postfix) with ESMTPS id AEFB4B20EC4 for ; Thu, 2 May 2024 15:56:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BCA2B15D5A4; Thu, 2 May 2024 15:56:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="jnSMlcIt" Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 688EB15AD83; Thu, 2 May 2024 15:56:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714665404; cv=none; b=Ns2lgxbup6hbDTChIq1F0ZdaG4XM645J2shuXyTyKWMCAv7RAp0Bfv92XNhiDwlSHirQtr0VUsUi8EfK1XKn4mqXTLYT3x3mYbn3EaJSYwD9U3+0YXG9xpmwUrW3KMNIiDCk9VZu7E5AjTn44VRmI/8n7kT/FSa1hnP1rLbTT2k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1714665404; c=relaxed/simple; bh=BNZ7VCPqIKavIbCVEnhdxfAfj5DbuGh10cv43Ssn2rk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=NrRHzJT/X76aUQpRYF4XxAzkHipgHaFBIcLANaoPypVlCMnPeBX0qiHF7udUUIqGWwbydDqvjmULwx6SRXpzeavzZWXWf0jeT1DyuNDqlXl/soLZELiKy4hD8EVOL8oN3Uy3OvPGzmhwy74bgRMkGwPOUgvSpt1E9k9Ph7FnFWA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=jnSMlcIt; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Received: from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi [81.175.209.231]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 42DA73A3; Thu, 2 May 2024 17:55:35 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1714665335; bh=BNZ7VCPqIKavIbCVEnhdxfAfj5DbuGh10cv43Ssn2rk=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=jnSMlcIt5GY6y0QCKlRnRwjUxUy+OXFL3lb5q3xwriAfQ1XM0hdrEX26Y4xSBi+FQ L72jIK7nkXz0HCAPtF7Rb+x1zFTG1EtF9j5ah2S9T6RX9KlYqUZEC3ZvnbPkm3ehC2 r8UxJmawbCOQ9y1KOJ8vd01dLIWBulksmipSllag= Date: Thu, 2 May 2024 18:56:26 +0300 From: Laurent Pinchart To: Julien Massot Cc: Sakari Ailus , Mauro Carvalho Chehab , Tomi Valkeinen , Jacopo Mondi , Kieran Bingham , Niklas =?utf-8?Q?S=C3=B6derlund?= , Benjamin Mugnier , Sylvain Petinot , Yong Zhi , Bingbu Cao , Dan Scally , Tianshu Qiu , Eugen Hristev , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea , Maxime Ripard , Rui Miguel Silva , Martin Kepplinger , Purism Kernel Team , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Robert Foss , Todor Tomov , Bryan O'Donoghue , Bjorn Andersson , Konrad Dybcio , Fabrizio Castro , Dafna Hirschfeld , Heiko Stuebner , Sylwester Nawrocki , Krzysztof Kozlowski , Alim Akhtar , Hugues Fruchet , Alain Volmat , Maxime Coquelin , Alexandre Torgue , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Yong Deng , Paul Kocialkowski , Benoit Parrot , Jai Luthra , Philipp Zabel , Michal Simek , Greg Kroah-Hartman , Thierry Reding , Jonathan Hunter , Sowjanya Komatineni , Luca Ceresoli , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, imx@lists.linux.dev, linux-arm-msm@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-samsung-soc@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com, linux-sunxi@lists.linux.dev, linux-staging@lists.linux.dev, linux-tegra@vger.kernel.org Subject: Re: [PATCH 0/2] Introduce v4l2_async_nf_unregister_cleanup Message-ID: <20240502155626.GD15807@pendragon.ideasonboard.com> References: <20240502-master-v1-0-8bd109c6a3ba@collabora.com> 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-Disposition: inline In-Reply-To: <20240502-master-v1-0-8bd109c6a3ba@collabora.com> Hi Julien, On Thu, May 02, 2024 at 05:22:20PM +0200, Julien Massot wrote: > Many drivers has > v4l2_async_nf_unregister(¬ifier); > v4l2_async_nf_cleanup(¬ifier); > > Introduce a helper function to call both functions in one line. Does this really go in the right direction ? For other objects (video devices, media devices, ...), the unregistration should be done at remove() time, and the cleanup at .release() time (the operation called when the last reference to the object is released). This is needed to ensure proper lifetime management of the objects, and avoid a use-after-free for objects that can be reached from userspace. It could be argued that the notifier isn't exposed to userspace, but can we guarantee that no driver will have a need to access the notifier in a code path triggered by a userspace operation ? I think it would be safer to adopt the same split for the nofifier unregistration and cleanup. In my opinion using the same rule across different APIs also make it easier for driver authors and for reviewers to get it right. As shown by your series, lots of drivers call v4l2_async_nf_cleanup() and .remove() time instead of .release(). That's because most drivers get lifetime management wrong and don't even implement .release(). That's something Sakari is addressing with ongoing work. This patch series seems to go in the opposite direction. > --- > Julien Massot (2): > media: v4l: async: Add v4l2_async_nf_unregister_cleanup > media: convert all drivers to use v4l2_async_nf_unregister_cleanup > > drivers/media/i2c/ds90ub913.c | 10 ++-------- > drivers/media/i2c/ds90ub953.c | 10 ++-------- > drivers/media/i2c/ds90ub960.c | 10 ++-------- > drivers/media/i2c/max9286.c | 3 +-- > drivers/media/i2c/st-mipid02.c | 6 ++---- > drivers/media/i2c/tc358746.c | 3 +-- > drivers/media/pci/intel/ipu3/ipu3-cio2.c | 6 ++---- > drivers/media/pci/intel/ipu6/ipu6-isys.c | 8 +------- > drivers/media/pci/intel/ivsc/mei_csi.c | 6 ++---- > drivers/media/platform/atmel/atmel-isi.c | 3 +-- > drivers/media/platform/cadence/cdns-csi2rx.c | 6 ++---- > drivers/media/platform/intel/pxa_camera.c | 3 +-- > drivers/media/platform/marvell/mcam-core.c | 6 ++---- > drivers/media/platform/microchip/microchip-csi2dc.c | 3 +-- > drivers/media/platform/microchip/microchip-isc-base.c | 6 ++---- > drivers/media/platform/nxp/imx-mipi-csis.c | 6 ++---- > drivers/media/platform/nxp/imx7-media-csi.c | 3 +-- > drivers/media/platform/nxp/imx8-isi/imx8-isi-core.c | 3 +-- > drivers/media/platform/nxp/imx8mq-mipi-csi2.c | 6 ++---- > drivers/media/platform/qcom/camss/camss.c | 3 +-- > drivers/media/platform/renesas/rcar-csi2.c | 6 ++---- > drivers/media/platform/renesas/rcar-isp.c | 6 ++---- > drivers/media/platform/renesas/rcar-vin/rcar-core.c | 9 +++------ > drivers/media/platform/renesas/rcar_drif.c | 3 +-- > drivers/media/platform/renesas/renesas-ceu.c | 4 +--- > drivers/media/platform/renesas/rzg2l-cru/rzg2l-core.c | 3 +-- > drivers/media/platform/renesas/rzg2l-cru/rzg2l-csi2.c | 6 ++---- > drivers/media/platform/rockchip/rkisp1/rkisp1-dev.c | 3 +-- > drivers/media/platform/samsung/exynos4-is/media-dev.c | 3 +-- > drivers/media/platform/st/stm32/stm32-dcmi.c | 3 +-- > .../media/platform/st/stm32/stm32-dcmipp/dcmipp-core.c | 3 +-- > drivers/media/platform/sunxi/sun4i-csi/sun4i_csi.c | 3 +-- > .../media/platform/sunxi/sun6i-csi/sun6i_csi_bridge.c | 3 +-- > .../platform/sunxi/sun6i-mipi-csi2/sun6i_mipi_csi2.c | 3 +-- > .../sunxi/sun8i-a83t-mipi-csi2/sun8i_a83t_mipi_csi2.c | 3 +-- > drivers/media/platform/ti/am437x/am437x-vpfe.c | 3 +-- > drivers/media/platform/ti/cal/cal.c | 8 +------- > drivers/media/platform/ti/davinci/vpif_capture.c | 3 +-- > drivers/media/platform/ti/j721e-csi2rx/j721e-csi2rx.c | 10 ++-------- > drivers/media/platform/ti/omap3isp/isp.c | 3 +-- > drivers/media/platform/video-mux.c | 3 +-- > drivers/media/platform/xilinx/xilinx-vipp.c | 3 +-- > drivers/staging/media/deprecated/atmel/atmel-isc-base.c | 6 ++---- > drivers/staging/media/sunxi/sun6i-isp/sun6i_isp_proc.c | 3 +-- > drivers/staging/media/tegra-video/vi.c | 3 +-- > include/media/v4l2-async.h | 17 +++++++++++++++++ > 46 files changed, 80 insertions(+), 153 deletions(-) > --- > base-commit: 843a9f4a7a85988f2f3af98adf21797c2fd05ab1 > change-id: 20240502-master-5deee133b4f5 -- Regards, Laurent Pinchart