diff options
author | Ajay Singh <ajay.kathat@microchip.com> | 2018-09-25 11:53:44 +0530 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-09-25 20:53:57 +0200 |
commit | 454dc5905d0cb99de61d41ae205e5b62922869e9 (patch) | |
tree | ddc7e32a4f1c41ebc1c2b1cd10da6f91e37a3e86 /drivers | |
parent | ba853fe6f8a4657ec675d53a34d6bc6cbb7d1638 (diff) | |
download | linux-454dc5905d0cb99de61d41ae205e5b62922869e9.tar.bz2 |
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')
-rw-r--r-- | drivers/staging/wilc1000/linux_wlan.c | 14 |
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); |