OSDN Git Service

libertas: return errno from lbs_add_card()
authorLubomir Rintel <lkundrak@v3.sk>
Sun, 7 Oct 2018 00:33:27 +0000 (02:33 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Sat, 13 Oct 2018 17:03:53 +0000 (20:03 +0300)
This makes the error handling somewhat cleaner -- lbs_add_card() does no
logner throw away the errno and lets its callers propagate it.

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/libertas/if_cs.c
drivers/net/wireless/marvell/libertas/if_sdio.c
drivers/net/wireless/marvell/libertas/if_spi.c
drivers/net/wireless/marvell/libertas/if_usb.c
drivers/net/wireless/marvell/libertas/main.c

index 7d88223..cebf03c 100644 (file)
@@ -900,8 +900,8 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
 
        /* Make this card known to the libertas driver */
        priv = lbs_add_card(card, &p_dev->dev);
-       if (!priv) {
-               ret = -ENOMEM;
+       if (IS_ERR(priv)) {
+               ret = PTR_ERR(priv);
                goto out2;
        }
 
index 39bf85d..8d98e7f 100644 (file)
@@ -1206,8 +1206,8 @@ static int if_sdio_probe(struct sdio_func *func,
 
 
        priv = lbs_add_card(card, &func->dev);
-       if (!priv) {
-               ret = -ENOMEM;
+       if (IS_ERR(priv)) {
+               ret = PTR_ERR(priv);
                goto free;
        }
 
index e9aec6c..504d6e0 100644 (file)
@@ -1146,8 +1146,8 @@ static int if_spi_probe(struct spi_device *spi)
         * This will call alloc_etherdev.
         */
        priv = lbs_add_card(card, &spi->dev);
-       if (!priv) {
-               err = -ENOMEM;
+       if (IS_ERR(priv)) {
+               err = PTR_ERR(priv);
                goto free_card;
        }
        card->priv = priv;
index 3dbfce9..220dcde 100644 (file)
@@ -254,8 +254,11 @@ static int if_usb_probe(struct usb_interface *intf,
                goto dealloc;
        }
 
-       if (!(priv = lbs_add_card(cardp, &intf->dev)))
+       priv = lbs_add_card(cardp, &intf->dev);
+       if (IS_ERR(priv)) {
+               r = PTR_ERR(priv);
                goto err_add_card;
+       }
 
        cardp->priv = priv;
 
index f22e1c2..f7db60b 100644 (file)
@@ -907,25 +907,29 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev)
        struct net_device *dev;
        struct wireless_dev *wdev;
        struct lbs_private *priv = NULL;
+       int err;
 
        /* Allocate an Ethernet device and register it */
        wdev = lbs_cfg_alloc(dmdev);
        if (IS_ERR(wdev)) {
+               err = PTR_ERR(wdev);
                pr_err("cfg80211 init failed\n");
-               goto done;
+               goto err_cfg;
        }
 
        wdev->iftype = NL80211_IFTYPE_STATION;
        priv = wdev_priv(wdev);
        priv->wdev = wdev;
 
-       if (lbs_init_adapter(priv)) {
+       err = lbs_init_adapter(priv);
+       if (err) {
                pr_err("failed to initialize adapter structure\n");
                goto err_wdev;
        }
 
        dev = alloc_netdev(0, "wlan%d", NET_NAME_UNKNOWN, ether_setup);
        if (!dev) {
+               err = -ENOMEM;
                dev_err(dmdev, "no memory for network device instance\n");
                goto err_adapter;
        }
@@ -949,6 +953,7 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev)
        init_waitqueue_head(&priv->waitq);
        priv->main_thread = kthread_run(lbs_thread, dev, "lbs_main");
        if (IS_ERR(priv->main_thread)) {
+               err = PTR_ERR(priv->main_thread);
                lbs_deb_thread("Error creating main thread.\n");
                goto err_ndev;
        }
@@ -961,7 +966,7 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev)
        priv->wol_gap = 20;
        priv->ehs_remove_supported = true;
 
-       goto done;
+       return priv;
 
  err_ndev:
        free_netdev(dev);
@@ -972,10 +977,8 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev)
  err_wdev:
        lbs_cfg_free(priv);
 
-       priv = NULL;
-
-done:
-       return priv;
+ err_cfg:
+       return ERR_PTR(err);
 }
 EXPORT_SYMBOL_GPL(lbs_add_card);