diff options
author | Arvind Yadav <arvind.yadav.cs@gmail.com> | 2017-09-21 06:16:56 -0400 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2017-09-21 06:18:44 -0400 |
commit | 75f029c3a83f3e7a1d0d928efa4fe47dd6a8a9eb (patch) | |
tree | eb03274258a15fc3c08963a1b6cdb8b24c4811ef /drivers/edac | |
parent | 2bd6bf03f4c1c59381d62c61d03f6cc3fe71f66e (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.c | 11 | ||||
-rw-r--r-- | drivers/edac/sb_edac.c | 5 | ||||
-rw-r--r-- | drivers/edac/skx_edac.c | 9 |
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 | ||
2215 | fail0: | 2220 | fail0: |
2216 | kfree(mci->ctl_name); | 2221 | kfree(mci->ctl_name); |
2222 | |||
2223 | fail1: | ||
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 | ||
492 | fail: | 496 | fail: |
493 | kfree(mci->ctl_name); | 497 | kfree(mci->ctl_name); |
498 | fail0: | ||
494 | edac_mc_free(mci); | 499 | edac_mc_free(mci); |
495 | imc->mci = NULL; | 500 | imc->mci = NULL; |
496 | return rc; | 501 | return rc; |