qcacld-3.0: free allocated memory for failure case
When obtaining twt session traffic statistics, some allocated memory not freed for failure case. Fix it to avoid memory leak. Change-Id: I18ce45467c3600c3f62b23ab50582ecb40ced88d CRs-Fixed: 3169747
This commit is contained in:

committed by
Madan Koyyalamudi

parent
8c45c18934
commit
46d2c60297
@@ -4006,7 +4006,8 @@ hdd_twt_request_session_traffic_stats(struct hdd_adapter *adapter,
|
||||
skb_len);
|
||||
if (!reply_skb) {
|
||||
hdd_err("Get stats - alloc reply_skb failed");
|
||||
return -ENOMEM;
|
||||
errno = -ENOMEM;
|
||||
goto free_event;
|
||||
}
|
||||
|
||||
status = hdd_twt_pack_get_stats_resp_nlmsg(
|
||||
@@ -4016,14 +4017,23 @@ hdd_twt_request_session_traffic_stats(struct hdd_adapter *adapter,
|
||||
event->num_twt_infra_cp_stats);
|
||||
if (QDF_IS_STATUS_ERROR(status)) {
|
||||
hdd_err("Get stats - Failed to pack nl response");
|
||||
wlan_cfg80211_vendor_free_skb(reply_skb);
|
||||
return qdf_status_to_os_return(status);
|
||||
errno = qdf_status_to_os_return(status);
|
||||
goto free_skb;
|
||||
}
|
||||
|
||||
qdf_mem_free(event->twt_infra_cp_stats);
|
||||
qdf_mem_free(event);
|
||||
|
||||
return wlan_cfg80211_vendor_cmd_reply(reply_skb);
|
||||
|
||||
free_skb:
|
||||
wlan_cfg80211_vendor_free_skb(reply_skb);
|
||||
|
||||
free_event:
|
||||
qdf_mem_free(event->twt_infra_cp_stats);
|
||||
qdf_mem_free(event);
|
||||
|
||||
return errno;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -747,15 +747,15 @@ wlan_cfg80211_mc_twt_get_infra_cp_stats(struct wlan_objmgr_vdev *vdev,
|
||||
out->twt_infra_cp_stats =
|
||||
qdf_mem_malloc(sizeof(*out->twt_infra_cp_stats));
|
||||
if (!out->twt_infra_cp_stats) {
|
||||
qdf_mem_free(out);
|
||||
*errno = -ENOMEM;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
request = osif_request_alloc(¶ms);
|
||||
if (!request) {
|
||||
qdf_mem_free(out);
|
||||
*errno = -ENOMEM;
|
||||
return NULL;
|
||||
goto free_stats_event;
|
||||
}
|
||||
|
||||
cookie = osif_request_cookie(request);
|
||||
@@ -765,7 +765,7 @@ wlan_cfg80211_mc_twt_get_infra_cp_stats(struct wlan_objmgr_vdev *vdev,
|
||||
qdf_mem_malloc(sizeof(*priv->twt_infra_cp_stats));
|
||||
if (!priv->twt_infra_cp_stats) {
|
||||
*errno = -ENOMEM;
|
||||
return NULL;
|
||||
goto get_twt_stats_fail;
|
||||
}
|
||||
twt_event = priv->twt_infra_cp_stats;
|
||||
|
||||
@@ -834,6 +834,8 @@ wlan_cfg80211_mc_twt_get_infra_cp_stats(struct wlan_objmgr_vdev *vdev,
|
||||
|
||||
get_twt_stats_fail:
|
||||
osif_request_put(request);
|
||||
|
||||
free_stats_event:
|
||||
wlan_cfg80211_mc_infra_cp_stats_free_stats_event(out);
|
||||
|
||||
osif_debug("Exit");
|
||||
|
Reference in New Issue
Block a user