mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-16 05:26:07 +00:00
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: Lubomir Rintel <lkundrak@v3.sk> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
6528d88047
commit
bbc2a101f0
@ -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,
|
|||||||
|
|
||||||
|
|
||||||
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)
|
|||||||
* 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,
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user