iwmc3200wifi: Return proper error for iwm_if_alloc
authorAxel Lin <axel.lin@gmail.com>
Mon, 10 Jan 2011 02:26:00 +0000 (10:26 +0800)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 13 Jan 2011 20:46:44 +0000 (15:46 -0500)
In the case of alloc_netdev_mq failure and kmalloc failure,
current implementation returns ERR_PTR(0).

As a result, the caller of iwm_if_alloc does not catch the error by IS_ERR
macro. Fix it by setting proper error code for ret variable in the failure
cases.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwmc3200wifi/netdev.c

index 13a69ebf2a94cbe67834f5dd9dec9c752e6deaf2..5091d77e02ce7a8838237cd6cebe0d0f0eed733d 100644 (file)
@@ -126,6 +126,7 @@ void *iwm_if_alloc(int sizeof_bus, struct device *dev,
        ndev = alloc_netdev_mq(0, "wlan%d", ether_setup, IWM_TX_QUEUES);
        if (!ndev) {
                dev_err(dev, "no memory for network device instance\n");
+               ret = -ENOMEM;
                goto out_priv;
        }
 
@@ -138,6 +139,7 @@ void *iwm_if_alloc(int sizeof_bus, struct device *dev,
                                    GFP_KERNEL);
        if (!iwm->umac_profile) {
                dev_err(dev, "Couldn't alloc memory for profile\n");
+               ret = -ENOMEM;
                goto out_profile;
        }