diff options
Diffstat (limited to 'wcn6740/qcwcn/wifi_hal/radio_mode.cpp')
-rw-r--r-- | wcn6740/qcwcn/wifi_hal/radio_mode.cpp | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/wcn6740/qcwcn/wifi_hal/radio_mode.cpp b/wcn6740/qcwcn/wifi_hal/radio_mode.cpp index 913ddfd..f758073 100644 --- a/wcn6740/qcwcn/wifi_hal/radio_mode.cpp +++ b/wcn6740/qcwcn/wifi_hal/radio_mode.cpp @@ -169,7 +169,8 @@ int RADIOModeCommand::handleEvent(WifiEvent &event) { ALOGE("%s: QCA_WLAN_VENDOR_ATTR_MAC_INFO_MAC_ID" " not found", __FUNCTION__); - return WIFI_ERROR_INVALID_ARGS; + ret = WIFI_ERROR_INVALID_ARGS; + goto cleanup; } mode_info.wlan_mac_id = nla_get_u32(tb2[QCA_WLAN_VENDOR_ATTR_MAC_INFO_MAC_ID]); ALOGV("mac_id[%d]: %d ", num_of_mac, mode_info.wlan_mac_id); @@ -178,7 +179,8 @@ int RADIOModeCommand::handleEvent(WifiEvent &event) { ALOGE("%s: QCA_WLAN_VENDOR_ATTR_MAC_INFO_BAND" " NOT FOUND", __FUNCTION__); - return WIFI_ERROR_INVALID_ARGS; + ret = WIFI_ERROR_INVALID_ARGS; + goto cleanup; } mode_info.mac_band = (wlan_mac_band) nla_get_u32(tb2[QCA_WLAN_VENDOR_ATTR_MAC_INFO_BAND]); ALOGV("mac_band[%d]: %d ", num_of_mac, mode_info.mac_band); @@ -203,7 +205,8 @@ int RADIOModeCommand::handleEvent(WifiEvent &event) { ALOGE("%s: QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_IFINDEX" " NOT FOUND", __FUNCTION__); - return WIFI_ERROR_INVALID_ARGS; + ret = WIFI_ERROR_INVALID_ARGS; + goto cleanup; } if (if_indextoname(nla_get_u32(tb3[QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_IFINDEX]), miface_info.iface_name) == NULL) @@ -217,7 +220,8 @@ int RADIOModeCommand::handleEvent(WifiEvent &event) { ALOGE("%s: QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_FREQ" " NOT FOUND", __FUNCTION__); - return WIFI_ERROR_INVALID_ARGS; + ret = WIFI_ERROR_INVALID_ARGS; + goto cleanup; } miface_info.channel = nla_get_u32(tb3[QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_FREQ]); ALOGV("channel[%d]: %d ", num_of_iface, miface_info.channel); @@ -252,13 +256,9 @@ int RADIOModeCommand::handleEvent(WifiEvent &event) if (mHandler.on_radio_mode_change && num_of_mac) { (*mHandler.on_radio_mode_change)(mreqId, num_of_mac, mwifi_iface_mac_info); - free(mwifi_iface_mac_info); - mwifi_iface_mac_info = NULL; } else { ALOGE("No Callback registered: on radio mode change"); - free(mwifi_iface_mac_info); - mwifi_iface_mac_info = NULL; } } break; @@ -268,6 +268,16 @@ int RADIOModeCommand::handleEvent(WifiEvent &event) ALOGE("%s: Wrong subcmd received %d", __FUNCTION__, mSubcmd); } +cleanup: + if (mode_info.iface_info != NULL) { + free(mode_info.iface_info); + mode_info.iface_info = NULL; + } + if (mwifi_iface_mac_info != NULL) { + free(mwifi_iface_mac_info); + mwifi_iface_mac_info = NULL; + } + return ret; } |