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 A33023644B3; Tue, 21 Jul 2026 19:54:23 +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=1784663664; cv=none; b=ht+jSFyqxvLKAU4yTYEBPMcbSgZ8NJZjpSd8pW0csdL6gmtUn2atCdjtclxMtoprFh4cDVR4uoCYa6bA0Cc1Cmiki48tDsi0Ljk/cJCWC5kBOAfIveEOiIq925XUlBEeRWWo72yLsSOPAWvHCoHQtgVfE4AAwIsWlxL47xP1dA0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784663664; c=relaxed/simple; bh=6RfT6x5Q1GosUm3jXvLk9l+mB2m8l8Y8iZCQsAxGupc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hxB0n46k3gf+8MJQMVpAhfSyOu91j7YdrE+gPx73qbKd1KvhxAPCMYxoPSLMAN+Ngom0PMsZp88sc9A5Fx3qbf/HaKKlpIBz/oRleEdoSi9nU5k8mYo/PVP5RGgcXs8gBAJcfJRUbjO+gbxF9fR/B1wC8WF62I5+PvpDHIcrCxc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=lICONOQh; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="lICONOQh" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 159C21F000E9; Tue, 21 Jul 2026 19:54:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1784663663; bh=2C9jYkB7oFAfT3woF2NEhKVqa1PtXVDWeMXzgBVIE3c=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=lICONOQhcp/sYwoPW+yF/ZTXp9DZmUTg0YRXKzHBtLCK+qgXf1Hvr8QJ8ocMzfkXo XkRjhApp7Kxyx+S8/uW0qUq9CAVf5E9SfaK+D0x+gs8lWUs6LEZiMmyRwkjzRbW6IV xKfrxO0Y9vxVf2KenQQpnP+XPS5vp/Jki4Y23MAE= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Mukesh Ojha , Wasim Nazir , Bjorn Andersson Subject: [PATCH 6.12 0907/1276] remoteproc: qcom: Fix leak when custom dump_segments addition fails Date: Tue, 21 Jul 2026 17:22:30 +0200 Message-ID: <20260721152506.332630113@linuxfoundation.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260721152446.065700225@linuxfoundation.org> References: <20260721152446.065700225@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.12-stable review patch. If anyone has any objections, please let me know. ------------------ From: Wasim Nazir commit ecf9fc18e62c58eae1ceb65dab2bccb8a724de2d upstream. 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: Greg Kroah-Hartman --- drivers/remoteproc/qcom_common.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) --- a/drivers/remoteproc/qcom_common.c +++ b/drivers/remoteproc/qcom_common.c @@ -110,6 +110,7 @@ static int qcom_add_minidump_segments(st 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; @@ -130,17 +131,22 @@ static int qcom_add_minidump_segments(st if (le32_to_cpu(region.valid) == MINIDUMP_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,