Skip to content

Commit d42d571

Browse files
Haoxiang Libp3tk0v
authored andcommitted
EDAC/i3200: Fix a resource leak in i3200_probe1()
If edac_mc_alloc() fails, also unmap the window. [ bp: Use separate labels, turning it into the classic unwind pattern. ] Fixes: dd8ef1d ("edac: i3200 memory controller driver") 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/20251223123202.1492038-1-lihaoxiang@isrc.iscas.ac.cn
1 parent f8f9c1f commit d42d571

1 file changed

Lines changed: 6 additions & 5 deletions

File tree

drivers/edac/i3200_edac.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -358,10 +358,11 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx)
358358
layers[1].type = EDAC_MC_LAYER_CHANNEL;
359359
layers[1].size = nr_channels;
360360
layers[1].is_virt_csrow = false;
361-
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers,
362-
sizeof(struct i3200_priv));
361+
362+
rc = -ENOMEM;
363+
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, sizeof(struct i3200_priv));
363364
if (!mci)
364-
return -ENOMEM;
365+
goto unmap;
365366

366367
edac_dbg(3, "MC: init mci\n");
367368

@@ -421,9 +422,9 @@ static int i3200_probe1(struct pci_dev *pdev, int dev_idx)
421422
return 0;
422423

423424
fail:
425+
edac_mc_free(mci);
426+
unmap:
424427
iounmap(window);
425-
if (mci)
426-
edac_mc_free(mci);
427428

428429
return rc;
429430
}

0 commit comments

Comments
 (0)