summaryrefslogtreecommitdiffstats
path: root/drivers/staging/wilc1000
diff options
context:
space:
mode:
authorAjay Singh2018-09-25 08:23:44 +0200
committerGreg Kroah-Hartman2018-09-25 20:53:57 +0200
commit454dc5905d0cb99de61d41ae205e5b62922869e9 (patch)
treeddc7e32a4f1c41ebc1c2b1cd10da6f91e37a3e86 /drivers/staging/wilc1000
parentstaging: wilc1000: refactor wilc_set_multicast_list() function (diff)
downloadkernel-qcow2-linux-454dc5905d0cb99de61d41ae205e5b62922869e9.tar.gz
kernel-qcow2-linux-454dc5905d0cb99de61d41ae205e5b62922869e9.tar.xz
kernel-qcow2-linux-454dc5905d0cb99de61d41ae205e5b62922869e9.zip
staging: wilc1000: return exact error of register_netdev() from wilc_netdev_init()
Refactor wilc_netdev_init() to return the error code received from register_netdev() during the failure condition. Earlier discussion link [1]. https://www.spinics.net/lists/linux-wireless/msg177304.html Suggested-by: Claudiu Beznea <claudiu.beznea@microchip.com> Signed-off-by: Ajay Singh <ajay.kathat@microchip.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/wilc1000')
-rw-r--r--drivers/staging/wilc1000/linux_wlan.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c
index 5346717e8c26..76c901235e93 100644
--- a/drivers/staging/wilc1000/linux_wlan.c
+++ b/drivers/staging/wilc1000/linux_wlan.c
@@ -1062,7 +1062,8 @@ int wilc_netdev_init(struct wilc **wilc, struct device *dev, int io_type,
if (!wl)
return -ENOMEM;
- if (wilc_wlan_cfg_init(wl))
+ ret = wilc_wlan_cfg_init(wl);
+ if (ret)
goto free_wl;
*wilc = wl;
@@ -1074,8 +1075,10 @@ int wilc_netdev_init(struct wilc **wilc, struct device *dev, int io_type,
INIT_LIST_HEAD(&wl->rxq_head.list);
wl->hif_workqueue = create_singlethread_workqueue("WILC_wq");
- if (!wl->hif_workqueue)
+ if (!wl->hif_workqueue) {
+ ret = -ENOMEM;
goto free_cfg;
+ }
register_inetaddr_notifier(&g_dev_notifier);
@@ -1083,8 +1086,10 @@ int wilc_netdev_init(struct wilc **wilc, struct device *dev, int io_type,
struct wireless_dev *wdev;
ndev = alloc_etherdev(sizeof(struct wilc_vif));
- if (!ndev)
+ if (!ndev) {
+ ret = -ENOMEM;
goto free_ndev;
+ }
vif = netdev_priv(ndev);
memset(vif, 0, sizeof(struct wilc_vif));
@@ -1107,6 +1112,7 @@ int wilc_netdev_init(struct wilc **wilc, struct device *dev, int io_type,
wdev = wilc_create_wiphy(ndev, dev);
if (!wdev) {
netdev_err(ndev, "Can't register WILC Wiphy\n");
+ ret = -ENOMEM;
goto free_ndev;
}
@@ -1148,7 +1154,7 @@ free_cfg:
wilc_wlan_cfg_deinit(wl);
free_wl:
kfree(wl);
- return -ENOMEM;
+ return ret;
}
EXPORT_SYMBOL_GPL(wilc_netdev_init);