diff options
| author | Govind Singh <govinds@codeaurora.org> | 2016-09-06 11:51:04 +0530 |
|---|---|---|
| committer | Anjaneedevi Kapparapu <akappa@codeaurora.org> | 2016-09-08 14:29:15 +0530 |
| commit | ab90d6218b82d3561e06f7e5e7ded5bf493dafe6 (patch) | |
| tree | ab933b5e3e68547ccdba2c39c2702fef577d06c2 | |
| parent | 3be161be144a1acc7ff47857c83d1081b4162bba (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.c | 11 |
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; |
