From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (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 B88DB384CCE for ; Thu, 20 Aug 2026 21:16:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787260592; cv=none; b=AyMgfWIStN8YKYXHo8EMor7DaM/vIK2vsDx6xW2o+5uDLvAVwS/taIP0VO7YMSDJHHocR9eXOpARROrrbc5V18/vvf22q6oCEKa/blFzhB3P8RHohoiHilHztXcRZXIL4lNHAEqKDS67C+Px0z/J1Ca6qHhOKWDqJHHQD2wcpEc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787260592; c=relaxed/simple; bh=bNlpXExtscX3EVAUDj60TJoAef6WcFdlDXt5knFXUcY=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=BSHzV+Jf0tx4GlSJv709H5QlK1t7gLWUJ7v9EvPlTff65+5QNvvBn6o07BOWnlMOATfF2iQIEOvaM+bnbcH/nvKy/V3FfxxHVEl4XgLmM2cNVTgBiQzipl3Jf/UeFjzpwDMgj32PHIBX6xEqAUTeglER4dNw+6VXv+CKinzWusk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=EW/qInFV; arc=none smtp.client-ip=209.85.218.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="EW/qInFV" Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-c15cb6f5c12so61843566b.0 for ; Thu, 20 Aug 2026 14:16:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787260586; x=1787865386; darn=vger.kernel.org; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=5kA3ZZhBTSElNS8aKZBmn/3V+poXJbKTYV5bqqaHIws=; b=EW/qInFVBjh030FsiTCLgejtHJ9IH7wUXb+VmCOcS/9Fe+V9e6/LAjbVsncVjZNJHF PHloD5VEQ5LVZBiAtidNVQkMwbfXSmEpojW9sRlYrOTGgCWLdQM8Q69eKkK4PEd8zlbE rORzoQIaoDv1gJyEq7dkiuIx7IafZHUhO/j5JUUUQIG69UDfaUDXfmEXrm1PEbRe1Ix+ Jn4vwhSG1D/X44sZc6dQq/TReKuNGUcCPlHFf+JM7WTs6EmOAN5YKduTfG6FxgKYl++2 jhxv9QmxR2Sg2CbVxIYwujI8qzYSsjYLFUmFAgglvqkBaHtgMIvaGePafeZptDpynSXH OPuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787260586; x=1787865386; h=in-reply-to:content-disposition:content-type:mime-version :references:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=5kA3ZZhBTSElNS8aKZBmn/3V+poXJbKTYV5bqqaHIws=; b=KRzPARztsdg6vp+aNt9Y9qZLdbUdbnzTtwUwZlc4n1ehAk4jni1urGtqnm4ywP6+CU 8zw8eVazIB0AweEG2cDyxE3JVqQLqq6+cc4og2RS2d41qlqdaPWnF2r/RmicpWFslcOW bd+ZdSkO8e8DwK4u8+S4CCBmJ/1abMpQoNS3E3fMt7tX+UOczFdWSvWEUWCTECEE6E+q i3b/YSszwQFIkMVDyzIoTYTJf1MBKLL4gT1osDUQ0NlGmoQnead1DfK4Q5EcLF6wIWe/ TE4vBi0R0JAcT0GTGNIoh+o762IK1sGMiDuWdtS0+sPEjh3tdqtjALcAAvI/1THtXwwW K1lw== X-Forwarded-Encrypted: i=1; AHgh+Rr6LC5WLl1FWG4Re0oew5Dor4KuTjQT8GXDBtdQnfaEoCy1TX3MW2sj6oVIKml2A43Ch0AIELfgavOg8RY=@vger.kernel.org X-Gm-Message-State: AOJu0YwNtxKOHWQwB+OfJMw8bhtEgLRlaAeDd3IyaHNFI3YkJRzdNIdg EV+PyBJcIozvxzE8X7ghjPeqG02uFZ5uVa9SM4mJ7DUlqopkJu2KyiWJgZfKKw== X-Gm-Gg: AR+sD12sIuvfVr/U1omay9MZtqqxBSYqhlWMW1z06CYEhRmzIoKGW8oy6ML0443zbI9 pdvSvnqzVYVqpY465fPFEQaOfD+ut366HNBrUnjzHoGh8ep+chnPz5xvUStPDIGQawbQw5BdKYr xl2XNK+87Y7IlhVZbHwUP544lqKL3HhY53h8iNKSF5//yaPSG789AMB1EsDbhLqcVNpI8rLZpFX Snc94AUVXU3YA/eqEyIEX6cTuJMBwvPzhyqhF+aw6S6cBFOHgI+vrtV/flO/Ch2L2pG8bPCh/h9 BeSpb2Qo31g3rl9stez5XON4voK1XLVeN1PUVT+3y9dS1qoL531luTsGen3AAn8z9sy67cvrz5o eZ8eLJXHDGBgMDmK7hlMmxPmHKnjhc6G7fRfXwd5MndYVOCPsxrs/dNnXuC6yXkXOZsQ26IOaj2 aaIBJSrtQ3MtGbWrsQwngEZdjq0HYMmq2uVLliMmzRzdE75R2135bytc5cCDdjE59Pv93zX8+MW pbIBvY4JS8/N/hLG461trXlucgKFoewoFRh X-Received: by 2002:a17:907:80e:b0:c1c:4a80:30c4 with SMTP id a640c23a62f3a-c246a6055bdmr133567066b.11.1787260585986; Thu, 20 Aug 2026 14:16:25 -0700 (PDT) Received: from michalis-linux (adsl-75.176.58.251.tellas.gr. [176.58.251.75]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2458b07504sm148630566b.15.2026.08.20.14.16.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 14:16:25 -0700 (PDT) Date: Fri, 21 Aug 2026 00:16:23 +0300 From: Michail Tatas To: Frank Li Cc: nicolas.dufresne@collabora.com, benjamin.gaignard@collabora.com, p.zabel@pengutronix.de, mchehab@kernel.org, heiko@sntech.de, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] media: verisilicon: rockchip: Fix leaks in init Message-ID: References: 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=us-ascii Content-Disposition: inline In-Reply-To: On Wed, Aug 19, 2026 at 12:56:40PM -0400, Frank Li wrote: > On Wed, Aug 19, 2026 at 12:28:12PM +0300, Michail Tatas wrote: > > if one of the dma_alloc_coherent in the init fucntion fails then > > the previously allocated ones leak. > > > > Fix by freeing them in the error path. > > > > Fixes: 727a400686a2 ("media: verisilicon: Add Rockchip AV1 decoder") > > Signed-off-by: Michail Tatas > > --- > > .../verisilicon/rockchip_vpu981_hw_av1_dec.c | 68 +++++++++++++++---- > > 1 file changed, 55 insertions(+), 13 deletions(-) > > > > diff --git a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c > > index e4e21ad37323..fa77fd402412 100644 > > --- a/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c > > +++ b/drivers/media/platform/verisilicon/rockchip_vpu981_hw_av1_dec.c > > @@ -369,6 +369,7 @@ void rockchip_vpu981_av1_dec_exit(struct hantro_ctx *ctx) > > > > int rockchip_vpu981_av1_dec_init(struct hantro_ctx *ctx) > > { > > + int ret = 0; > > struct hantro_dev *vpu = ctx->dev; > > struct hantro_av1_dec_hw_ctx *av1_dec = &ctx->av1_dec; > > > > @@ -377,39 +378,54 @@ int rockchip_vpu981_av1_dec_init(struct hantro_ctx *ctx) > > av1_dec->global_model.cpu = dma_alloc_coherent(vpu->dev, GLOBAL_MODEL_SIZE, > > &av1_dec->global_model.dma, > > GFP_KERNEL); > > - if (!av1_dec->global_model.cpu) > > - return -ENOMEM; > > + if (!av1_dec->global_model.cpu) { > > + ret = -ENOMEM; > > + goto global_model_cpu_err; > > + } > > + > > av1_dec->global_model.size = GLOBAL_MODEL_SIZE; > > > > av1_dec->tile_info.cpu = dma_alloc_coherent(vpu->dev, AV1_TILE_INFO_SIZE, > > &av1_dec->tile_info.dma, > > GFP_KERNEL); > > - if (!av1_dec->tile_info.cpu) > > - return -ENOMEM; > > + if (!av1_dec->tile_info.cpu) { > > + ret = -ENOMEM; > > + goto tile_info_cpu_err; > > + } > > + > > This function is called by hantro_probe() if I am correct > > there are dmam_alloc_coherent(), use dmam_alloc_coherent() will simple > error handle and tear down. > > Frank Hello Frank, I did not know about the dmam* functions thanks for letting me know. I read some of the docs about them and they seem to not apply to this particular case since this code is not called from the probe function but rather the hantro_start_streaming function. Since dmam_alloc_coherent() only releases memory at device removal, it wouldn't free them when the stream ends and a new stream would re-allocate while the old buffers lingered until detach. So I think manual dma_free_coherent() error path is the correct fit here. Best regards, Michail