summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qcwcn/wifi_hal/llstats.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/qcwcn/wifi_hal/llstats.cpp b/qcwcn/wifi_hal/llstats.cpp
index c0e72fb..419c3c0 100644
--- a/qcwcn/wifi_hal/llstats.cpp
+++ b/qcwcn/wifi_hal/llstats.cpp
@@ -1020,6 +1020,11 @@ int LLStatsCommand::handleResponse(WifiEvent &reply)
mResultsParams.radio_stat);
if(mResultsParams.radio_stat)
{
+ if (mResultsParams.radio_stat->tx_time_per_levels)
+ {
+ free(mResultsParams.radio_stat->tx_time_per_levels);
+ mResultsParams.radio_stat->tx_time_per_levels = NULL;
+ }
free(mResultsParams.radio_stat);
mResultsParams.radio_stat = NULL;
}
@@ -1033,7 +1038,7 @@ int LLStatsCommand::handleResponse(WifiEvent &reply)
case QCA_NL80211_VENDOR_SUBCMD_LL_STATS_TYPE_PEERS:
{
struct nlattr *peerInfo;
- wifi_iface_stat *pIfaceStat;
+ wifi_iface_stat *pIfaceStat = NULL;
u32 numPeers, num_rates = 0;
if (!tb_vendor[
QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_NUM_PEERS])
@@ -1098,9 +1103,12 @@ int LLStatsCommand::handleResponse(WifiEvent &reply)
}
memset(pIfaceStat, 0, resultsBufSize);
- if(mResultsParams.iface_stat)
+ if(mResultsParams.iface_stat) {
memcpy ( pIfaceStat, mResultsParams.iface_stat,
sizeof(wifi_iface_stat));
+ free (mResultsParams.iface_stat);
+ mResultsParams.iface_stat = pIfaceStat;
+ }
wifi_peer_info *pPeerStats;
pIfaceStat->num_peers = numPeers;
@@ -1132,9 +1140,6 @@ int LLStatsCommand::handleResponse(WifiEvent &reply)
goto cleanup;
}
}
- if(mResultsParams.iface_stat)
- free (mResultsParams.iface_stat);
- mResultsParams.iface_stat = pIfaceStat;
}
// Number of Radios are 1 for now
@@ -1143,6 +1148,11 @@ int LLStatsCommand::handleResponse(WifiEvent &reply)
mResultsParams.radio_stat);
if(mResultsParams.radio_stat)
{
+ if (mResultsParams.radio_stat->tx_time_per_levels)
+ {
+ free(mResultsParams.radio_stat->tx_time_per_levels);
+ mResultsParams.radio_stat->tx_time_per_levels = NULL;
+ }
free(mResultsParams.radio_stat);
mResultsParams.radio_stat = NULL;
}
@@ -1207,6 +1217,11 @@ int LLStatsCommand::handleResponse(WifiEvent &reply)
cleanup:
if(mResultsParams.radio_stat)
{
+ if (mResultsParams.radio_stat->tx_time_per_levels)
+ {
+ free(mResultsParams.radio_stat->tx_time_per_levels);
+ mResultsParams.radio_stat->tx_time_per_levels = NULL;
+ }
free(mResultsParams.radio_stat);
mResultsParams.radio_stat = NULL;
}