From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 3D58136DA13 for ; Thu, 23 Jul 2026 18:12:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784830372; cv=none; b=ZRTrfXfNTI85Mw98Qc6J2TxXAxJct+Q3mOpsWsfyVfl+IPsJTfFz8RwrnzgaRovFQrY83AR17s0YEakFjFl2H45wNhTygCBbYdrP46Gv4HiL56i7m4OsUp3dmBJsu1S/UkXXDIPQYqW30k/N2RaS/6nQN838G+pPLBN3lYfWlCQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784830372; c=relaxed/simple; bh=Iz3uc4Sc/1IJX7wx9JGf4gJuTmyN8R4w8XDAypqRfoA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WHI32/7YmvotTxJPP1DXn6+LVzfaB19opNubz6d8AHJkv2wKnCDE8RAn51ZBKjM27BqO+dkcqNZxVmNnCkbihpVlvfMVUxZS1XwMfbtrAj9vrfVWmH+3Dyu5vHQHZt/hfJtl51XLn1TyNAy9mrWL6CSFGSr+KP29hF5sVdMwSZc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1E07F1F00A3E; Thu, 23 Jul 2026 18:12:49 +0000 (UTC) From: Sasha Levin To: stable@vger.kernel.org Cc: Wasim Nazir , Mukesh Ojha , Bjorn Andersson , Sasha Levin Subject: [PATCH 5.15.y 4/4] remoteproc: qcom: Fix leak when custom dump_segments addition fails Date: Thu, 23 Jul 2026 14:12:42 -0400 Message-ID: <20260723181242.3433785-4-sashal@kernel.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260723181242.3433785-1-sashal@kernel.org> References: <2026072052-islamic-scorecard-54c2@gregkh> <20260723181242.3433785-1-sashal@kernel.org> Precedence: bulk X-Mailing-List: stable@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Wasim Nazir [ Upstream commit ecf9fc18e62c58eae1ceb65dab2bccb8a724de2d ] Free allocated minidump_region 'name' in qcom_add_minidump_segments() when failing before adding the region to 'dump_segments'. Otherwise, the 'name' is not tracked and is never freed by qcom_minidump_cleanup(). Return error when adding to 'dump_segments' fails. Cc: stable@vger.kernel.org # v5.11 Fixes: 8ed8485c4f05 ("remoteproc: qcom: Add capability to collect minidumps") Reviewed-by: Mukesh Ojha Signed-off-by: Wasim Nazir Link: https://lore.kernel.org/r/20260318-rproc-memleak-v2-1-ade70ab858f2@oss.qualcomm.com Signed-off-by: Bjorn Andersson Signed-off-by: Sasha Levin --- drivers/remoteproc/qcom_common.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/remoteproc/qcom_common.c b/drivers/remoteproc/qcom_common.c index 041199065fc7fb..b7960f047b66cd 100644 --- a/drivers/remoteproc/qcom_common.c +++ b/drivers/remoteproc/qcom_common.c @@ -108,6 +108,7 @@ static int qcom_add_minidump_segments(struct rproc *rproc, struct minidump_subsy struct minidump_region __iomem *ptr; struct minidump_region region; int seg_cnt, i; + int ret = 0; dma_addr_t da; size_t size; char *name; @@ -128,17 +129,22 @@ static int qcom_add_minidump_segments(struct rproc *rproc, struct minidump_subsy if (le32_to_cpu(region.valid) == MD_REGION_VALID) { name = kstrndup(region.name, MAX_REGION_NAME_LENGTH - 1, GFP_KERNEL); if (!name) { - iounmap(ptr); - return -ENOMEM; + ret = -ENOMEM; + break; } da = le64_to_cpu(region.address); size = le64_to_cpu(region.size); - rproc_coredump_add_custom_segment(rproc, da, size, rproc_dumpfn_t, name); + ret = rproc_coredump_add_custom_segment(rproc, da, size, rproc_dumpfn_t, + name); + if (ret) { + kfree(name); + break; + } } } iounmap(ptr); - return 0; + return ret; } void qcom_minidump(struct rproc *rproc, unsigned int minidump_id, -- 2.53.0