]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ipmi: kcs_bmc: handle devm_kasprintf() failure case
authorNicholas Mc Guire <hofrat@osadl.org>
Wed, 21 Nov 2018 15:08:25 +0000 (16:08 +0100)
committerCorey Minyard <cminyard@mvista.com>
Sun, 10 Feb 2019 01:48:42 +0000 (19:48 -0600)
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>
drivers/char/ipmi/kcs_bmc.c

index e6124bd548df211317e7a69fa42da99849382e69..ed4dc3b1843e3a06995750deda672b5bb830444a 100644 (file)
@@ -440,12 +440,13 @@ struct kcs_bmc *kcs_bmc_alloc(struct device *dev, int sizeof_priv, u32 channel)
        kcs_bmc->data_in = devm_kmalloc(dev, KCS_MSG_BUFSIZ, GFP_KERNEL);
        kcs_bmc->data_out = devm_kmalloc(dev, KCS_MSG_BUFSIZ, GFP_KERNEL);
        kcs_bmc->kbuffer = devm_kmalloc(dev, KCS_MSG_BUFSIZ, GFP_KERNEL);
-       if (!kcs_bmc->data_in || !kcs_bmc->data_out || !kcs_bmc->kbuffer)
-               return NULL;
 
        kcs_bmc->miscdev.minor = MISC_DYNAMIC_MINOR;
        kcs_bmc->miscdev.name = devm_kasprintf(dev, GFP_KERNEL, "%s%u",
                                               DEVICE_NAME, channel);
+       if (!kcs_bmc->data_in || !kcs_bmc->data_out || !kcs_bmc->kbuffer ||
+           !kcs_bmc->miscdev.name)
+               return NULL;
        kcs_bmc->miscdev.fops = &kcs_bmc_fops;
 
        return kcs_bmc;