summaryrefslogtreecommitdiffstats
path: root/drivers/edac
diff options
context:
space:
mode:
authorArvind Yadav <arvind.yadav.cs@gmail.com>2017-09-21 06:16:56 -0400
committerBorislav Petkov <bp@suse.de>2017-09-21 06:18:44 -0400
commit75f029c3a83f3e7a1d0d928efa4fe47dd6a8a9eb (patch)
treeeb03274258a15fc3c08963a1b6cdb8b24c4811ef /drivers/edac
parent2bd6bf03f4c1c59381d62c61d03f6cc3fe71f66e (diff)
EDAC: Handle return value of kasprintf()
kasprintf() can fail and we must check its return value. Signed-off-by: Arvind Yadav <arvind.yadav.cs@gmail.com> Cc: linux-edac@vger.kernel.org [ Merged into a single patch, small formatting fixups. ] Signed-off-by: Borislav Petkov <bp@suse.de>
Diffstat (limited to 'drivers/edac')
-rw-r--r--drivers/edac/i7core_edac.c11
-rw-r--r--drivers/edac/sb_edac.c5
-rw-r--r--drivers/edac/skx_edac.c9
3 files changed, 21 insertions, 4 deletions
diff --git a/drivers/edac/i7core_edac.c b/drivers/edac/i7core_edac.c
index c16c3b931b3d..8c5540160a23 100644
--- a/drivers/edac/i7core_edac.c
+++ b/drivers/edac/i7core_edac.c
@@ -2159,8 +2159,13 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev)
2159 mci->edac_ctl_cap = EDAC_FLAG_NONE; 2159 mci->edac_ctl_cap = EDAC_FLAG_NONE;
2160 mci->edac_cap = EDAC_FLAG_NONE; 2160 mci->edac_cap = EDAC_FLAG_NONE;
2161 mci->mod_name = "i7core_edac.c"; 2161 mci->mod_name = "i7core_edac.c";
2162 mci->ctl_name = kasprintf(GFP_KERNEL, "i7 core #%d", 2162
2163 i7core_dev->socket); 2163 mci->ctl_name = kasprintf(GFP_KERNEL, "i7 core #%d", i7core_dev->socket);
2164 if (!mci->ctl_name) {
2165 rc = -ENOMEM;
2166 goto fail1;
2167 }
2168
2164 mci->dev_name = pci_name(i7core_dev->pdev[0]); 2169 mci->dev_name = pci_name(i7core_dev->pdev[0]);
2165 mci->ctl_page_to_phys = NULL; 2170 mci->ctl_page_to_phys = NULL;
2166 2171
@@ -2214,6 +2219,8 @@ static int i7core_register_mci(struct i7core_dev *i7core_dev)
2214 2219
2215fail0: 2220fail0:
2216 kfree(mci->ctl_name); 2221 kfree(mci->ctl_name);
2222
2223fail1:
2217 edac_mc_free(mci); 2224 edac_mc_free(mci);
2218 i7core_dev->mci = NULL; 2225 i7core_dev->mci = NULL;
2219 return rc; 2226 return rc;
diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
index dc0591654011..2078ee414568 100644
--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -3287,6 +3287,11 @@ static int sbridge_register_mci(struct sbridge_dev *sbridge_dev, enum type type)
3287 break; 3287 break;
3288 } 3288 }
3289 3289
3290 if (!mci->ctl_name) {
3291 rc = -ENOMEM;
3292 goto fail0;
3293 }
3294
3290 /* Get dimm basic config and the memory layout */ 3295 /* Get dimm basic config and the memory layout */
3291 rc = get_dimm_config(mci); 3296 rc = get_dimm_config(mci);
3292 if (rc < 0) { 3297 if (rc < 0) {
diff --git a/drivers/edac/skx_edac.c b/drivers/edac/skx_edac.c
index 16dea97568a1..3fe85b0ac274 100644
--- a/drivers/edac/skx_edac.c
+++ b/drivers/edac/skx_edac.c
@@ -464,8 +464,12 @@ static int skx_register_mci(struct skx_imc *imc)
464 pvt = mci->pvt_info; 464 pvt = mci->pvt_info;
465 pvt->imc = imc; 465 pvt->imc = imc;
466 466
467 mci->ctl_name = kasprintf(GFP_KERNEL, "Skylake Socket#%d IMC#%d", 467 mci->ctl_name = kasprintf(GFP_KERNEL, "Skylake Socket#%d IMC#%d", imc->node_id, imc->lmc);
468 imc->node_id, imc->lmc); 468 if (!mci->ctl_name) {
469 rc = -ENOMEM;
470 goto fail0;
471 }
472
469 mci->mtype_cap = MEM_FLAG_DDR4; 473 mci->mtype_cap = MEM_FLAG_DDR4;
470 mci->edac_ctl_cap = EDAC_FLAG_NONE; 474 mci->edac_ctl_cap = EDAC_FLAG_NONE;
471 mci->edac_cap = EDAC_FLAG_NONE; 475 mci->edac_cap = EDAC_FLAG_NONE;
@@ -491,6 +495,7 @@ static int skx_register_mci(struct skx_imc *imc)
491 495
492fail: 496fail:
493 kfree(mci->ctl_name); 497 kfree(mci->ctl_name);
498fail0:
494 edac_mc_free(mci); 499 edac_mc_free(mci);
495 imc->mci = NULL; 500 imc->mci = NULL;
496 return rc; 501 return rc;