From: Jes Sorensen Date: Sun, 25 May 2014 20:43:18 +0000 (+0200) Subject: staging: rtl8723au: rtw_wdev_alloc(): Don't register wiphy before kmalloc() completed X-Git-Tag: next-20140530~19^2~218 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=d165e4efbc6d76cff51abb523567a840cb6623b9;p=karo-tx-linux.git staging: rtl8723au: rtw_wdev_alloc(): Don't register wiphy before kmalloc() completed There is no point starting to register the wiphy and then having to unregister it again if the followon kmalloc() fails. Signed-off-by: Jes Sorensen Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c index 9f9f034fd5e6..4528c95b8e67 100644 --- a/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c +++ b/drivers/staging/rtl8723au/os_dep/ioctl_cfg80211.c @@ -3367,22 +3367,24 @@ int rtw_wdev_alloc(struct rtw_adapter *padapter, struct device *dev) ret = -ENOMEM; goto exit; } + + /* wdev */ + wdev = kzalloc(sizeof(struct wireless_dev), GFP_KERNEL); + if (!wdev) { + DBG_8723A("Couldn't allocate wireless device\n"); + ret = -ENOMEM; + goto free_wiphy; + } + set_wiphy_dev(wiphy, dev); rtw_cfg80211_preinit_wiphy(padapter, wiphy); ret = wiphy_register(wiphy); if (ret < 0) { DBG_8723A("Couldn't register wiphy device\n"); - goto free_wiphy; + goto free_wdev; } - /* wdev */ - wdev = kzalloc(sizeof(struct wireless_dev), GFP_KERNEL); - if (!wdev) { - DBG_8723A("Couldn't allocate wireless device\n"); - ret = -ENOMEM; - goto unregister_wiphy; - } wdev->wiphy = wiphy; wdev->netdev = pnetdev; /* wdev->iftype = NL80211_IFTYPE_STATION; */ @@ -3408,8 +3410,8 @@ int rtw_wdev_alloc(struct rtw_adapter *padapter, struct device *dev) pwdev_priv->power_mgmt = false; return ret; -unregister_wiphy: - wiphy_unregister(wiphy); +free_wdev: + kfree(wdev); free_wiphy: wiphy_free(wiphy); exit: