EDAC/x38: Fix a resource leak in x38_probe1()

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

authored by Haoxiang Li and committed by Borislav Petkov (AMD) 0ff7c441 d42d5715

+6 -3
+6 -3
drivers/edac/x38_edac.c
··· 341 layers[1].type = EDAC_MC_LAYER_CHANNEL; 342 layers[1].size = x38_channel_num; 343 layers[1].is_virt_csrow = false; 344 mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0); 345 if (!mci) 346 - return -ENOMEM; 347 348 edac_dbg(3, "MC: init mci\n"); 349 ··· 406 return 0; 407 408 fail: 409 iounmap(window); 410 - if (mci) 411 - edac_mc_free(mci); 412 413 return rc; 414 }
··· 341 layers[1].type = EDAC_MC_LAYER_CHANNEL; 342 layers[1].size = x38_channel_num; 343 layers[1].is_virt_csrow = false; 344 + 345 + 346 + rc = -ENOMEM; 347 mci = edac_mc_alloc(0, ARRAY_SIZE(layers), layers, 0); 348 if (!mci) 349 + goto unmap; 350 351 edac_dbg(3, "MC: init mci\n"); 352 ··· 403 return 0; 404 405 fail: 406 + edac_mc_free(mci); 407 + unmap: 408 iounmap(window); 409 410 return rc; 411 }