Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ipmi: kcs_bmc: handle devm_kasprintf() failure case

devm_kasprintf() may return NULL if internal allocation failed so this
assignment is not safe. Moved the error exit path and added the !NULL
which then allows the devres manager to take care of cleanup.

Signed-off-by: Nicholas Mc Guire <hofrat@osadl.org>
Fixes: cd2315d471f4 ("ipmi: kcs_bmc: don't change device name")
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Reviewed-by: Haiyue Wang <haiyue.wang@linux.intel.com>

authored by

Nicholas Mc Guire and committed by
Corey Minyard
42c7c6ef 95ac0daa

+3 -2
+3 -2
drivers/char/ipmi/kcs_bmc.c
··· 440 440 kcs_bmc->data_in = devm_kmalloc(dev, KCS_MSG_BUFSIZ, GFP_KERNEL); 441 441 kcs_bmc->data_out = devm_kmalloc(dev, KCS_MSG_BUFSIZ, GFP_KERNEL); 442 442 kcs_bmc->kbuffer = devm_kmalloc(dev, KCS_MSG_BUFSIZ, GFP_KERNEL); 443 - if (!kcs_bmc->data_in || !kcs_bmc->data_out || !kcs_bmc->kbuffer) 444 - return NULL; 445 443 446 444 kcs_bmc->miscdev.minor = MISC_DYNAMIC_MINOR; 447 445 kcs_bmc->miscdev.name = devm_kasprintf(dev, GFP_KERNEL, "%s%u", 448 446 DEVICE_NAME, channel); 447 + if (!kcs_bmc->data_in || !kcs_bmc->data_out || !kcs_bmc->kbuffer || 448 + !kcs_bmc->miscdev.name) 449 + return NULL; 449 450 kcs_bmc->miscdev.fops = &kcs_bmc_fops; 450 451 451 452 return kcs_bmc;