diff options
| author | 2022-01-23 23:47:35 +0530 | |
|---|---|---|
| committer | 2022-01-25 16:29:24 +0100 | |
| commit | 055a2e2ca6d601a21dc95d435d9ea9bf9280921a (patch) | |
| tree | 10a36229b38427c854cb368c66d9e9ac12a466cc /drivers | |
| parent | staging: pi433: move get version func to where all other functions are (diff) | |
staging: r8188eu: handle rtw_init_netdev_name() failure appropriately
rtw_init_netdev_name() calls dev_alloc_name() which allocates the name
for the device as per the given name format.
The name format is specified by the module parameter "ifname".
It returns a negative err code if the format is invalid. Handle this
error appropriately.
Cancel the timers ininitliazed by rtw_init_drv_sw() before calling
rtw_free_drv_sw() and then proceed to free the adapter.
Also, if register_netdev() fails then goto free_drv_sw instead of
goto handle_dualmac.
Reviewed-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Vihas Mak <makvihas@gmail.com>
Link: https://lore.kernel.org/r/20220123181734.10402-1-makvihas@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/staging/r8188eu/os_dep/usb_intf.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/staging/r8188eu/os_dep/usb_intf.c b/drivers/staging/r8188eu/os_dep/usb_intf.c index 1b1b8bb165ba..1a67486ff5fb 100644 --- a/drivers/staging/r8188eu/os_dep/usb_intf.c +++ b/drivers/staging/r8188eu/os_dep/usb_intf.c @@ -399,7 +399,11 @@ static struct adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj, DBG_88E("can't get autopm:\n"); /* alloc dev name after read efuse. */ - rtw_init_netdev_name(pnetdev, padapter->registrypriv.ifname); + if (rtw_init_netdev_name(pnetdev, padapter->registrypriv.ifname) < 0) { + DBG_88E("rtw_init_netdev_name failed, ifname:%s\n", + padapter->registrypriv.ifname); + goto free_drv_sw; + } rtw_macaddr_cfg(padapter->eeprompriv.mac_addr); rtw_init_wifidirect_addrs(padapter, padapter->eeprompriv.mac_addr, padapter->eeprompriv.mac_addr); @@ -409,7 +413,7 @@ static struct adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj, /* step 6. Tell the network stack we exist */ if (register_netdev(pnetdev) != 0) - goto handle_dualmac; + goto free_drv_sw; DBG_88E("bDriverStopped:%d, bSurpriseRemoved:%d, bup:%d, hw_init_completed:%d\n" , padapter->bDriverStopped @@ -420,6 +424,11 @@ static struct adapter *rtw_usb_if1_init(struct dvobj_priv *dvobj, status = _SUCCESS; +free_drv_sw: + if (status != _SUCCESS) { + rtw_cancel_all_timer(padapter); + rtw_free_drv_sw(padapter); + } handle_dualmac: if (status != _SUCCESS) rtw_handle_dualmac(padapter, 0); |
