summaryrefslogtreecommitdiff
path: root/drivers/edac
diff options
context:
space:
mode:
authorHaoxiang Li <lihaoxiang@isrc.iscas.ac.cn>2025-12-23 20:43:50 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2026-01-30 10:27:28 +0100
commitdc2365df328a966ffcb878b8b9624d8f039aaf7f (patch)
tree6412dc6f6781aa65c397f281c9e63c4f71c4a312 /drivers/edac
parentac9256360151370d450c023542623a65c09548e0 (diff)
downloadlinux-dc2365df328a966ffcb878b8b9624d8f039aaf7f.tar.gz
linux-dc2365df328a966ffcb878b8b9624d8f039aaf7f.tar.bz2
linux-dc2365df328a966ffcb878b8b9624d8f039aaf7f.zip
EDAC/x38: Fix a resource leak in x38_probe1()
commit 0ff7c44106b4715fc27a2e455d9f57f1dfcfd54f upstream. If edac_mc_alloc() fails, also unmap the window. [ bp: Use separate labels, turning it into the classic unwind pattern. ] Fixes: df8bc08c192f ("edac x38: new MC driver module") Signed-off-by: Haoxiang Li <lihaoxiang@isrc.iscas.ac.cn> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Cc: stable@vger.kernel.org Link: https://patch.msgid.link/20251223124350.1496325-1-lihaoxiang@isrc.iscas.ac.cn Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/edac')
-rw-r--r--drivers/edac/x38_edac.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/edac/x38_edac.c b/drivers/edac/x38_edac.c
index 49ab5721aab2..292dda754c23 100644
--- a/drivers/edac/x38_edac.c
+++ b/drivers/edac/x38_edac.c
@@ -341,9 +341,12 @@ static int x38_probe1(struct pci_dev *pdev, int dev_idx)
layers[1].type = EDAC_MC_LAYER_CHANNEL;
layers[1].size = x38_channel_num;
layers[1].is_virt_csrow = false;
+
+
+ rc = -ENOMEM;
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
if (!mci)
- return -ENOMEM;
+ goto unmap;
edac_dbg(3, "MC: init mci\n");
@@ -403,9 +406,9 @@ static int x38_probe1(struct pci_dev *pdev, int dev_idx)
return 0;
fail:
+ edac_mc_free(mci);
+unmap:
iounmap(window);
- if (mci)
- edac_mc_free(mci);
return rc;
}