From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f52.google.com (mail-wm1-f52.google.com [209.85.128.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 36BE6453486 for ; Tue, 16 Jun 2026 16:59:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781629170; cv=none; b=qzY/2n2B753lioT8h33Ynylx44U8cWdgfMEIR9bDqvB/RqZbBm6vrBd5FqaeamLk5XrFD8JhtCaHya25AnP0oddjEfGWNlZH235EWlewb5ACW8sUZM8akKIBVflto2QqGC+pf1AkIQopbuJ0fosYM9mAAOxitLmtGSIQhO4pI8Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781629170; c=relaxed/simple; bh=RmlQGoLfci9osWvKrydhp2LNMfnznzpLPtUIkwc+vAg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=LuFNGFa8mdMTzx0fv3B78HpzJX+bY9zkuOu8SAo94ESWZWZui1kaDUowvzoXLxeb91lNgusfGRYvkWn808wgFOrD4YpnqYInG/KtxsX+5PKgmTPNIa3oxIsPe4PomlR5yE6lmKacrU9T7XCguy4eFV7jDPortJKFKZ9Hz19qRmI= 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=YyJqEFza; arc=none smtp.client-ip=209.85.128.52 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="YyJqEFza" Received: by mail-wm1-f52.google.com with SMTP id 5b1f17b1804b1-490b3637b90so37430815e9.3 for ; Tue, 16 Jun 2026 09:59:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781629168; x=1782233968; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=F2MzvP3M/Lvdf+YQEoRrr/63qV3jwcTxyyvjTUVpfjs=; b=YyJqEFzaO1Bd1JhN7ivVOdZWE6ev203ngAw7vIvDR8IRYxVs/48fynoN+FjcigD8kI Ho2Bz1/Kvic4fJrqs7qAXu5Zd20NStzqfxiiK+0lzGXnYt8XD0g5sbfJV0WOHWP4zZEB QScwKebx2RmkADzF6m/nVFfZ3VaSuMtKnzc7/VYWu26wzp5q8oaI8rVJs/unbRaa+fwZ xQSxbt1J+M0egszmcXfj1XR4GXkh3E8tzypULDqqi1zNScHfqIifbB/goCao2fFCqy7D Lhq+BuHVtkX4XRQWKqDthvtb4MrKEIztWqzUbdP0SNrkfavezCXBzIebqSDur25hPF4I 2+Kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781629168; x=1782233968; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=F2MzvP3M/Lvdf+YQEoRrr/63qV3jwcTxyyvjTUVpfjs=; b=FjpEfkdVwJciMZHK0vgmnYrpZclYrGoafIjp1nYsSkapM/MZGt0EnhEaCmAlOPcuRm F9o2hN4gowYsU/LoyxM476kJLBrmGjVe/rYKGHHHi3wecJ7BDy0C+egkGeddao8bmnXA jjnVjrCc7zdqhpXvbJgLSpDYsqCmJl4fSKb5r4GMvK4ivmm4H2HIneHgxFv5r+u1k0ia fM1XRJimjBeFyPRAMCPVOYdfjjsldWyWiMOSpauS/myn80Xf5Hv9iBUtaBf3zPQ8dJoy XdForDs5SyuTGgArzqSSqiq51pT9WTu/+8nLVXEFTlfOpI1PMyLvZ5Ubb3NM8jzFd/5m ZVPw== X-Forwarded-Encrypted: i=1; AFNElJ97SqiP8Ed0rQHiPUuQKWkrCUAh/xaB9kHaXJ2z0Mk4/8Hxqvsc1hnHHL/a6EefOcOZXNznXdA7GlV8Mwo=@vger.kernel.org X-Gm-Message-State: AOJu0YxpD1unJgaOzcLrxmOFp5lFVlHTkAeniEteMZIlvEBTxYXw9NkE dUHHtBoBI3CVGQcK8wUFBgxtV2ok3B4fQSqjT4/ZwIAAvAfHce0zE4y4 X-Gm-Gg: Acq92OE/mFn85Jw37gIKXa0A3xPWd90EJlcDtBuGLdT5oxxgIIp/gsRU0lXJlr4WAnT cSEcckd+SZIon57DPd7DOVj5Uuy0n4k68DUM7Du97/d0c9kvcfk0CKepgcIoxbA2zGq9C6rPnQZ htWJVvBAElaTrsP1qknb3Ms4Reu9NTcDDmqhdgc1XrQhcxNXziUvvgX5hpvYs3Ir2gTJtAZlVnn 1wsr5Np7FM6fH9RHOhqjd4FUPJsAsW3FF9/QMjgahk9lHGD0Sz9k0bk002P8LXPaIA8Yh18XWK3 nU20tyINonm8v2Guivk3QoUEz49zhe3HclBGsq1fEgwdPGld1Ccua0B4KGqamk3t1SjxiO2O6HT pCHYRKtOPI6C8bo+zkrmj+twCcERqQDwT6/fNByoKZZId8nkUwRmmhsYOKyWOadDTnSbOJBuscc qY3Adk7yVm3C2Fdan7O7A0T6774ZQ39HqthIitkIfCQ7CFlBgQkbxKaqv8Zhe5r3tDVcTh3uukY jtOb+HrNrdtXtTfucYwA7mZTRTa4osA5WNP X-Received: by 2002:a05:600c:3b02:b0:490:6237:521d with SMTP id 5b1f17b1804b1-492333a8e2cmr6254255e9.13.1781629167571; Tue, 16 Jun 2026 09:59:27 -0700 (PDT) Received: from jernej-laptop.localnet (APN-122-99-120-gprs.simobil.net. [46.122.99.120]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4922fa890d8sm103698875e9.10.2026.06.16.09.59.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jun 2026 09:59:27 -0700 (PDT) From: Jernej =?UTF-8?B?xaBrcmFiZWM=?= To: vkoul@kernel.org, Frank.Li@kernel.org, wens@kernel.org, samuel@sholland.org, mripard@kernel.org, arnd@arndb.de, Hongling Zeng Cc: dmaengine@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-sunxi@lists.linux.dev, linux-kernel@vger.kernel.org, zhongling0719@126.com, Hongling Zeng Subject: Re: [PATCH v2] dmaengine: sun6i-dma: Fix memory leak in sun6i_dma_terminate_all Date: Tue, 16 Jun 2026 18:59:24 +0200 Message-ID: <9Stif-p9RWiht_4RVVcSpg@gmail.com> In-Reply-To: <20260616060449.42225-1-zenghongling@kylinos.cn> References: <20260616060449.42225-1-zenghongling@kylinos.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Dne torek, 16. junij 2026 ob 08:04:49 Srednjeevropski poletni =C4=8Das je H= ongling Zeng napisal(a): > When terminating a non-cyclic DMA transfer, the active descriptor > is not properly reclaimed. The descriptor is removed from the > desc_issued list in sun6i_dma_start_desc(), but in > sun6i_dma_terminate_all(), only cyclic transfer descriptors are > added to the desc_completed list before cleanup. >=20 > For non-cyclic transfers, pchan->desc is set to NULL without first > adding the descriptor back to a list that vchan_get_all_descriptors() > can collect. This causes the descriptor and its associated LLI chain > to be permanently leaked. >=20 > Fix by ensuring both cyclic and non-cyclic active descriptors are > added to the desc_completed list before setting pchan->desc to NULL. >=20 > Fixes: 555859308723 ("dmaengine: sun6i: Add driver for the Allwinner A31 = DMA controller") > Signed-off-by: Hongling Zeng Acked-by: Jernej Skrabec Best regards, Jernej >=20 > --- > Change in v2; > -Add pchan->desc !=3D pchan->done check to prevent race condition > where completed descriptors could be double-added to desc_completed > list, causing list corruption > --- > drivers/dma/sun6i-dma.c | 12 +++++------- > 1 file changed, 5 insertions(+), 7 deletions(-) >=20 > diff --git a/drivers/dma/sun6i-dma.c b/drivers/dma/sun6i-dma.c > index 7a79f346250a..12d038ef5f2e 100644 > --- a/drivers/dma/sun6i-dma.c > +++ b/drivers/dma/sun6i-dma.c > @@ -946,16 +946,14 @@ static int sun6i_dma_terminate_all(struct dma_chan = *chan) > =20 > spin_lock_irqsave(&vchan->vc.lock, flags); > =20 > - if (vchan->cyclic) { > - vchan->cyclic =3D false; > - if (pchan && pchan->desc) { > - struct virt_dma_desc *vd =3D &pchan->desc->vd; > - struct virt_dma_chan *vc =3D &vchan->vc; > + if (pchan && pchan->desc && pchan->desc !=3D pchan->done) { > + struct virt_dma_desc *vd =3D &pchan->desc->vd; > + struct virt_dma_chan *vc =3D &vchan->vc; > =20 > - list_add_tail(&vd->node, &vc->desc_completed); > - } > + list_add_tail(&vd->node, &vc->desc_completed); > } > =20 > + vchan->cyclic =3D false; > vchan_get_all_descriptors(&vchan->vc, &head); > =20 > if (pchan) { >=20