Commit bbc2a101 authored by Lubomir Rintel's avatar Lubomir Rintel Committed by Kalle Valo

libertas: return errno from lbs_add_card()

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: default avatarLubomir Rintel <lkundrak@v3.sk>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent 6528d880
...@@ -900,8 +900,8 @@ static int if_cs_probe(struct pcmcia_device *p_dev) ...@@ -900,8 +900,8 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
/* Make this card known to the libertas driver */ /* Make this card known to the libertas driver */
priv = lbs_add_card(card, &p_dev->dev); priv = lbs_add_card(card, &p_dev->dev);
if (!priv) { if (IS_ERR(priv)) {
ret = -ENOMEM; ret = PTR_ERR(priv);
goto out2; goto out2;
} }
......
...@@ -1206,8 +1206,8 @@ static int if_sdio_probe(struct sdio_func *func, ...@@ -1206,8 +1206,8 @@ static int if_sdio_probe(struct sdio_func *func,
priv = lbs_add_card(card, &func->dev); priv = lbs_add_card(card, &func->dev);
if (!priv) { if (IS_ERR(priv)) {
ret = -ENOMEM; ret = PTR_ERR(priv);
goto free; goto free;
} }
......
...@@ -1146,8 +1146,8 @@ static int if_spi_probe(struct spi_device *spi) ...@@ -1146,8 +1146,8 @@ static int if_spi_probe(struct spi_device *spi)
* This will call alloc_etherdev. * This will call alloc_etherdev.
*/ */
priv = lbs_add_card(card, &spi->dev); priv = lbs_add_card(card, &spi->dev);
if (!priv) { if (IS_ERR(priv)) {
err = -ENOMEM; err = PTR_ERR(priv);
goto free_card; goto free_card;
} }
card->priv = priv; card->priv = priv;
......
...@@ -254,8 +254,11 @@ static int if_usb_probe(struct usb_interface *intf, ...@@ -254,8 +254,11 @@ static int if_usb_probe(struct usb_interface *intf,
goto dealloc; 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; goto err_add_card;
}
cardp->priv = priv; cardp->priv = priv;
......
...@@ -907,25 +907,29 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev) ...@@ -907,25 +907,29 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev)
struct net_device *dev; struct net_device *dev;
struct wireless_dev *wdev; struct wireless_dev *wdev;
struct lbs_private *priv = NULL; struct lbs_private *priv = NULL;
int err;
/* Allocate an Ethernet device and register it */ /* Allocate an Ethernet device and register it */
wdev = lbs_cfg_alloc(dmdev); wdev = lbs_cfg_alloc(dmdev);
if (IS_ERR(wdev)) { if (IS_ERR(wdev)) {
err = PTR_ERR(wdev);
pr_err("cfg80211 init failed\n"); pr_err("cfg80211 init failed\n");
goto done; goto err_cfg;
} }
wdev->iftype = NL80211_IFTYPE_STATION; wdev->iftype = NL80211_IFTYPE_STATION;
priv = wdev_priv(wdev); priv = wdev_priv(wdev);
priv->wdev = wdev; priv->wdev = wdev;
if (lbs_init_adapter(priv)) { err = lbs_init_adapter(priv);
if (err) {
pr_err("failed to initialize adapter structure\n"); pr_err("failed to initialize adapter structure\n");
goto err_wdev; goto err_wdev;
} }
dev = alloc_netdev(0, "wlan%d", NET_NAME_UNKNOWN, ether_setup); dev = alloc_netdev(0, "wlan%d", NET_NAME_UNKNOWN, ether_setup);
if (!dev) { if (!dev) {
err = -ENOMEM;
dev_err(dmdev, "no memory for network device instance\n"); dev_err(dmdev, "no memory for network device instance\n");
goto err_adapter; goto err_adapter;
} }
...@@ -949,6 +953,7 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev) ...@@ -949,6 +953,7 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev)
init_waitqueue_head(&priv->waitq); init_waitqueue_head(&priv->waitq);
priv->main_thread = kthread_run(lbs_thread, dev, "lbs_main"); priv->main_thread = kthread_run(lbs_thread, dev, "lbs_main");
if (IS_ERR(priv->main_thread)) { if (IS_ERR(priv->main_thread)) {
err = PTR_ERR(priv->main_thread);
lbs_deb_thread("Error creating main thread.\n"); lbs_deb_thread("Error creating main thread.\n");
goto err_ndev; goto err_ndev;
} }
...@@ -961,7 +966,7 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev) ...@@ -961,7 +966,7 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev)
priv->wol_gap = 20; priv->wol_gap = 20;
priv->ehs_remove_supported = true; priv->ehs_remove_supported = true;
goto done; return priv;
err_ndev: err_ndev:
free_netdev(dev); free_netdev(dev);
...@@ -972,10 +977,8 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev) ...@@ -972,10 +977,8 @@ struct lbs_private *lbs_add_card(void *card, struct device *dmdev)
err_wdev: err_wdev:
lbs_cfg_free(priv); lbs_cfg_free(priv);
priv = NULL; err_cfg:
return ERR_PTR(err);
done:
return priv;
} }
EXPORT_SYMBOL_GPL(lbs_add_card); EXPORT_SYMBOL_GPL(lbs_add_card);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment