summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGovind Singh <govinds@codeaurora.org>2016-09-06 11:51:04 +0530
committerAnjaneedevi Kapparapu <akappa@codeaurora.org>2016-09-08 14:29:15 +0530
commitab90d6218b82d3561e06f7e5e7ded5bf493dafe6 (patch)
treeab933b5e3e68547ccdba2c39c2702fef577d06c2
parent3be161be144a1acc7ff47857c83d1081b4162bba (diff)
qcacld-2.0: Discard pktlog message for invalid msdu id in HL
Discard pktlog message if msdu id is out of descriptor range to avoid invalid de-reference of tx descriptor. Change-Id: I66d37e90eb0862ce1e2ec5a6fe6c592ff5f612aa CRs-Fixed: 1063473
-rw-r--r--CORE/UTILS/PKTLOG/pktlog_internal.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/CORE/UTILS/PKTLOG/pktlog_internal.c b/CORE/UTILS/PKTLOG/pktlog_internal.c
index 3db0b8758af2..e4262bd747a5 100644
--- a/CORE/UTILS/PKTLOG/pktlog_internal.c
+++ b/CORE/UTILS/PKTLOG/pktlog_internal.c
@@ -35,6 +35,7 @@
#include "pktlog_ac_i.h"
#include "wma_api.h"
#include "wlan_logging_sock_svc.h"
+#include "ol_txrx.h"
#define TX_DESC_ID_LOW_MASK 0xffff
#define TX_DESC_ID_LOW_SHIFT 0
@@ -208,6 +209,14 @@ static void process_ieee_hdr(void *data)
}
}
+static inline uint16_t get_desc_pool_size(struct ol_txrx_pdev_t *txrx_pdev)
+{
+ if (txrx_pdev->cfg.is_high_latency)
+ return ol_tx_desc_pool_size_hl(txrx_pdev->ctrl_pdev);
+ else
+ return ol_cfg_target_tx_credit(txrx_pdev->ctrl_pdev);
+}
+
A_STATUS
process_tx_info(struct ol_txrx_pdev_t *txrx_pdev,
void *data)
@@ -374,7 +383,7 @@ process_tx_info(struct ol_txrx_pdev_t *txrx_pdev,
>> TX_DESC_ID_HIGH_SHIFT);
msdu_id += 1;
}
- if (tx_desc_id >= ol_cfg_target_tx_credit(txrx_pdev->ctrl_pdev)) {
+ if (tx_desc_id >= get_desc_pool_size(txrx_pdev)) {
adf_os_print("%s: drop due to invalid msdu id = %x\n",
__func__, tx_desc_id);
return A_ERROR;