From nobody Mon Sep 28 11:40:21 2026 Received: from mail-pj1-f43.google.com (mail-pj1-f43.google.com [209.85.216.43]) (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 35C401F8723 for ; Sat, 22 Aug 2026 07:20:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787383244; cv=none; b=fDBCpAgtmxj+7p6aLHQ561/c4SNclndYyQ+X99sxfHr6oHP1NHsH0pLWJreUpW51ZEs3brhhbp2xl27C0PXYG2hyvdsUQQhGbELBZFbGUhTQStBLKXwhRBY/3zhDWcsUqbn1O7dE6EGnriJ5BoRNhuNfD93dcQQPuFt/JUreZDY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787383244; c=relaxed/simple; bh=EMe0O0oAun09g3H2mTNI2xJBzXoNI5N35ldn1EuhJco=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Im/Iq5lTKYcRnkJimD+4eVs8GGgwLMTNn5q0qAHX0QZ4GAcvLqOgAXD5kutiEcwkmAFI2fodj4tm1TbAjZx3Zf3+sH3CqOH71YKmkqRjg1fZDLrxiiIOzFJE06TV2pGhGPrxvuJ5B8yrFvCfFCvNWpKu5ycVvO7b+FxHCym2fPE= 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=J11aCbe2; arc=none smtp.client-ip=209.85.216.43 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="J11aCbe2" Received: by mail-pj1-f43.google.com with SMTP id 98e67ed59e1d1-38e88b60121so1313964a91.3 for ; Sat, 22 Aug 2026 00:20:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787383242; x=1787988042; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=3iQTnt9oJ3v6w7xIpplt3JgJj2kj/4e9mI/GL4WtqJk=; b=J11aCbe2tXDP5EfPVeSTchs8dIS+jthwDW3VJAVXcolxuBaIUF8XYmrp7xgzQAx4Wr lYI0bN77SqEnCL3bEOytMtt1qR5YhHMQ42k7hxTq/DOQK762kcaB+hq1qJQXPC5FvG0q SS65JUgkHLLlJZVa5j4BMu8eKFQxpRjYsVYaW64GO1N0WpMTIqUxDrT+VVyhLgvmkEpc u6aLVhLZYvmmtWU4VArdaKQklT5KfIuBTpkgI3pbsN1r3XwsbuANstD4KvT1aI8IbA12 M+wKO9Y72eSIemFZn9tr5UVZIKl34Q5HM07UE2rGGgMYUtzEDQqToT6rDPuvat4ScLfh pO1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787383242; x=1787988042; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=3iQTnt9oJ3v6w7xIpplt3JgJj2kj/4e9mI/GL4WtqJk=; b=f30c0EhszymWvYcE8P8LRTwElM4Rne05Xf9seq14XyGgCYtbjqBfHK0IXHS1esAT// 0XMdh4tNcFuUCACdBJbzdRnhbPJMkK3S1PQYnWAcJUU03U5JrfwNNZRYfvB5RP1DkSON tBz4mFAteMFcN0RZuNKKYiEEZMqabk0aOrEVX+qIQDmWidw9me93I8NNt9CtiIlEHTFY SJN89XTd/jlohCujx1DatNzHGEbTLzlvId3pUxkTVqCI0iYpb/k3VjE2WkCOKMgtBhSt f30DaEqG2EZWwnm2J2stWXqOSMtkA61ky9sEfJucsjXOV9sQsdFYixPuslBIy3mwZbVv FLlw== X-Forwarded-Encrypted: i=1; AHgh+RoeaJERwseb8naqUfrnP6zLg5pFafPoFITNXDbvHts+6HDeRCL/Kuti2LBoyeqir62gHj6fOv3Nm3tkR6A=@vger.kernel.org X-Gm-Message-State: AFuF++lVWs/7m8ryYruQ627mOwHyVwinq6oZfiv1x/exxU/w4nO2kURd ct8MEx9ED3u5XsfDJoSl3XHJVXANbVLT6nNwzYYrEXtvGYMxZs3uYCGN X-Gm-Gg: AR+sD13moTO2Nycl+zknnGejdoLvD3pLHUZNpxfRwM/RArUT++OPXepMj2EE7aJGvMh HnUkpuQfcGYmCUWpQkoEJW9L7unZ4LzLBAZt7YKvEzXmCLXTtNkqzjpUMmRwFgkYSc94TM28cKc d4NlNyobJhTCVOf2zkVpKtY78C8Yh5E1g27Iep0XipDHP1VHaGDXFJN6ttbtWBWK5OedYF/h6rx RAfwbx1p+QgBuSU0N0XI75RSrcep1oFord0MkUocjnv4vYYBXJV5gJFtsJFNF/FloIlRNocU8NZ j4Y6RcwWibO/QP4vOZPx9A289kZvId1e7zRe7YF212a924JVaFL3Gy/1khUBUyE+K6YAd3btn4h ZHgC6+Qtst0ttIgNWEipbdCXpAmDFCHorlbp/Z++9LXlfgaCqnJsW/Ew52U9+1rRtV0BGXCPGVa er77GKju90ZfctTLHm1DoxZBBRxPS3+rYgMsVKd74Bq2FaQqlBHHHLrlsQ5RZ9nwixEwGXNQD2m zaycY55 X-Received: by 2002:a17:90b:538f:b0:38e:b400:a860 with SMTP id 98e67ed59e1d1-395df29e128mr7734335a91.13.1787383242533; Sat, 22 Aug 2026 00:20:42 -0700 (PDT) Received: from kernel ([103.219.206.63]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-327f909a51fsm3290362eec.4.2026.08.22.00.20.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 22 Aug 2026 00:20:42 -0700 (PDT) From: Mohamad Raizudeen To: clabbe@baylibre.com, herbert@gondor.apana.org.au, davem@davemloft.net Cc: skhan@linuxfoundation.org, me@brighamcampbell.com, jkoolstra@xs4all.nl, linux-crypto@vger.kernel.org, linux-amlogic@lists.infradead.org, linux-kernel@vger.kernel.org, Mohamad Raizudeen Subject: [PATCH] crypto: amlogic: Fix DMA memory leak in cipher error path Date: Sat, 22 Aug 2026 12:50:31 +0530 Message-ID: <20260822072031.23042-1-raizudeen.kerneldev@gmail.com> X-Mailer: git-send-email 2.53.0 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" In meson_cipher(), if the mapping of the destination scatterlist fails, the driver jumps to the end of the function. This skips the unmapping of the previously mapped source scatterlist and the key/IV buffer, causing a DMA memory leak. Fix this by introducing proper error labels, error_src and error_keyiv to unmap the already mapped resources before returning the error. Fixes: 48fe583fe541 ("crypto: amlogic - Add crypto accelerator for amlogic = GXL") Signed-off-by: Mohamad Raizudeen --- drivers/crypto/amlogic/amlogic-gxl-cipher.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/amlogic/amlogic-gxl-cipher.c b/drivers/crypto/a= mlogic/amlogic-gxl-cipher.c index 29048da6f50a..fc8569fd83fd 100644 --- a/drivers/crypto/amlogic/amlogic-gxl-cipher.c +++ b/drivers/crypto/amlogic/amlogic-gxl-cipher.c @@ -178,9 +178,9 @@ static int meson_cipher(struct skcipher_request *areq) nr_sgs =3D dma_map_sg(mc->dev, areq->src, sg_nents(areq->src), DMA_BIDIRECTIONAL); if (!nr_sgs) { - dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs); + dev_err(mc->dev, "Invalid BIDIR SG count %d\n", nr_sgs); err =3D -EINVAL; - goto theend; + goto error_keyiv; } nr_sgd =3D nr_sgs; } else { @@ -189,14 +189,14 @@ static int meson_cipher(struct skcipher_request *areq) if (!nr_sgs || nr_sgs > MAXDESC - 3) { dev_err(mc->dev, "Invalid SG count %d\n", nr_sgs); err =3D -EINVAL; - goto theend; + goto error_keyiv; } nr_sgd =3D dma_map_sg(mc->dev, areq->dst, sg_nents(areq->dst), DMA_FROM_DEVICE); if (!nr_sgd || nr_sgd > MAXDESC - 3) { dev_err(mc->dev, "Invalid SG count %d\n", nr_sgd); err =3D -EINVAL; - goto theend; + goto error_src; } } =20 @@ -251,6 +251,12 @@ static int meson_cipher(struct skcipher_request *areq) ivsize, 0); } } + goto theend; + +error_src: + dma_unmap_sg(mc->dev, areq->src, sg_nents(areq->src), DMA_TO_DEVICE); +error_keyiv: + dma_unmap_single(mc->dev, phykeyiv, keyivlen, DMA_TO_DEVICE); theend: kfree_sensitive(bkeyiv); kfree_sensitive(backup_iv); --=20 2.53.0