diff options
| author | Leo Chang <schang@qca.qualcomm.com> | 2015-01-22 10:32:17 -0800 |
|---|---|---|
| committer | AnjaneeDevi Kapparapu <c_akappa@qti.qualcomm.com> | 2015-01-27 16:00:56 +0530 |
| commit | f0582d71eda2b7a67ebdf28c77f9f23af7093e6c (patch) | |
| tree | ce3ed5fce488e4618f838d27119f541b80369e28 | |
| parent | 9fa396b8289fbc55215f13ba8e1bc1af9a2e2d39 (diff) | |
qca-cld: ipa packet double free fix
RX packet IPA error condition, HDD IPA module free error packet.
After free packet return error code to caller. And caller also
try to free packet which already free. Then packet double free
happen. HDD IPA dose not need free packet, just return error.
Then caller will free packet
Change-Id: I639f446fb7ea8d46b25ff6eef177fe490a000891
CRs-fixed: 782376
| -rw-r--r-- | CORE/HDD/src/wlan_hdd_ipa.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/CORE/HDD/src/wlan_hdd_ipa.c b/CORE/HDD/src/wlan_hdd_ipa.c index aa0a77976cf1..f40d9c1877af 100644 --- a/CORE/HDD/src/wlan_hdd_ipa.c +++ b/CORE/HDD/src/wlan_hdd_ipa.c @@ -2010,7 +2010,10 @@ VOS_STATUS hdd_ipa_process_rxt(v_VOID_t *vosContext, adf_nbuf_t rx_buf_list, adapter->magic != WLAN_HDD_ADAPTER_MAGIC) { HDD_IPA_LOG(VOS_TRACE_LEVEL_INFO_LOW, "Invalid sta_id: %d", sta_id); - goto drop_pkts; + hdd_ipa->stats.num_rx_drop++; + if (adapter) + adapter->stats.rx_dropped++; + return VOS_STATUS_E_FAILURE; } iface_context = (struct hdd_ipa_iface_context *) adapter->ipa_context; @@ -2076,19 +2079,6 @@ VOS_STATUS hdd_ipa_process_rxt(v_VOID_t *vosContext, adf_nbuf_t rx_buf_list, } return VOS_STATUS_SUCCESS; - -drop_pkts: - buf = rx_buf_list; - while (buf) { - next_buf = adf_nbuf_queue_next(buf); - adf_nbuf_free(buf); - buf = next_buf; - hdd_ipa->stats.num_rx_drop++; - if (adapter) - adapter->stats.rx_dropped++; - } - - return VOS_STATUS_E_FAILURE; } static void hdd_ipa_set_adapter_ip_filter(hdd_adapter_t *adapter) |
