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);