Skip to content

Commit 93fc4e0

Browse files
committed
Merge tag 'edac_urgent_for_v6.19_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras
Pull EDAC fixes from Borislav Petkov: "Make sure the memory-mapped memory controller registers BAR gets unmapped when the driver memory allocation fails Fix that in both x38 and i3200 EDAC drivers as former has copied the bug from the latter, it looks like" * tag 'edac_urgent_for_v6.19_rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/ras/ras: EDAC/x38: Fix a resource leak in x38_probe1() EDAC/i3200: Fix a resource leak in i3200_probe1()
2 parents e503f53 + 0ff7c44 commit 93fc4e0

2 files changed

Lines changed: 12 additions & 8 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
}

drivers/edac/x38_edac.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -341,9 +341,12 @@ static int x38_probe1(struct pci_dev *pdev, int dev_idx)
341341
layers[1].type = EDAC_MC_LAYER_CHANNEL;
342342
layers[1].size = x38_channel_num;
343343
layers[1].is_virt_csrow = false;
344+
345+
346+
rc = -ENOMEM;
344347
mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0);
345348
if (!mci)
346-
return -ENOMEM;
349+
goto unmap;
347350

348351
edac_dbg(3, "MC: init mci\n");
349352

@@ -403,9 +406,9 @@ static int x38_probe1(struct pci_dev *pdev, int dev_idx)
403406
return 0;
404407

405408
fail:
409+
edac_mc_free(mci);
410+
unmap:
406411
iounmap(window);
407-
if (mci)
408-
edac_mc_free(mci);
409412

410413
return rc;
411414
}

0 commit comments

Comments
 (0)