USB: whci-hcd: fix NULL dereference on allocation failure
authorDan Carpenter <dan.carpenter@oracle.com>
Fri, 20 Jul 2012 06:58:16 +0000 (09:58 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Aug 2012 22:17:39 +0000 (15:17 -0700)
If usb_create_hcd() fails here then we dereference "whc" inside the call
to whc_clean_up() before it has been set.  The compiler would have
warned about this if we hadn't initialized all the pointers to NULL at
the start of the function.  I've cleaned that up as well.

Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/whci/hcd.c

index 1e141f755b26dd22836461a28ac0d2f1c9a7bcbd..c3a647816af0b7b690172cbf4e90799b47718dd3 100644 (file)
@@ -238,16 +238,16 @@ static struct hc_driver whc_hc_driver = {
 
 static int whc_probe(struct umc_dev *umc)
 {
-       int ret = -ENOMEM;
+       int ret;
        struct usb_hcd *usb_hcd;
-       struct wusbhc *wusbhc = NULL;
-       struct whc *whc = NULL;
+       struct wusbhc *wusbhc;
+       struct whc *whc;
        struct device *dev = &umc->dev;
 
        usb_hcd = usb_create_hcd(&whc_hc_driver, dev, "whci");
        if (usb_hcd == NULL) {
                dev_err(dev, "unable to create hcd\n");
-               goto error;
+               return -ENOMEM;
        }
 
        usb_hcd->wireless = 1;