소스 검색

qcacmn: fix memory leak issue in tx mgmt ctrl payload tlv

fix memory leak issue in tx mgmt ctrl payload tlv.
if any of the mgmt or pkt capture feature is turned on.
htt_t2h_msg is hold in mgmt_buf and not set to NULL on free.
which cause leaking next target to host nbuf.

Change-Id: I0d9e0194e51a21b348aadf747b8c9def5c245eda
nobelj 5 년 전
부모
커밋
2a1312cd25
2개의 변경된 파일6개의 추가작업 그리고 6개의 파일을 삭제
  1. 2 0
      dp/inc/cdp_txrx_cmn_struct.h
  2. 4 6
      dp/wifi3.0/dp_htt.c

+ 2 - 0
dp/inc/cdp_txrx_cmn_struct.h

@@ -1294,10 +1294,12 @@ struct cdp_tx_indication_mpdu_info {
 
 /**
  * struct cdp_tx_indication_info - Tx capture information
+ * @frame_payload: 802.11 payload is present already
  * @mpdu_info: Tx MPDU completion information
  * @mpdu_nbuf: reconstructed mpdu packet
  */
 struct cdp_tx_indication_info {
+	uint8_t frame_payload;
 	struct cdp_tx_indication_mpdu_info mpdu_info;
 	qdf_nbuf_t mpdu_nbuf;
 };

+ 4 - 6
dp/wifi3.0/dp_htt.c

@@ -3030,17 +3030,15 @@ static bool dp_txrx_ppdu_stats_handler(struct dp_soc *soc,
 		    (pdev, htt_t2h_msg, pdev->mgmtctrl_frm_info.ppdu_id) !=
 		    QDF_STATUS_SUCCESS)
 			free_buf = false;
-
-		if (free_buf) {
-			pdev->mgmtctrl_frm_info.mgmt_buf = NULL;
-			pdev->mgmtctrl_frm_info.mgmt_buf_len = 0;
-			pdev->mgmtctrl_frm_info.ppdu_id = 0;
-		}
 	}
 
 	if (ppdu_info)
 		dp_ppdu_desc_deliver(pdev, ppdu_info);
 
+	pdev->mgmtctrl_frm_info.mgmt_buf = NULL;
+	pdev->mgmtctrl_frm_info.mgmt_buf_len = 0;
+	pdev->mgmtctrl_frm_info.ppdu_id = 0;
+
 	return free_buf;
 }
 #else