瀏覽代碼

qcacmn: Fix ref leak when monitor peer is null

Free the reference when peer is not null and monitor peer
is null.

Change-Id: I81875fbdf3918346b8c4f297f61fc241e7888fd4
CRs-Fixed: 3277552
Nandha Kishore Easwaran 2 年之前
父節點
當前提交
68ef6e5dff
共有 1 個文件被更改,包括 14 次插入2 次删除
  1. 14 2
      dp/wifi3.0/monitor/dp_mon.c

+ 14 - 2
dp/wifi3.0/monitor/dp_mon.c

@@ -3831,9 +3831,15 @@ dp_process_ppdu_stats_sch_cmd_status_tlv(struct dp_pdev *pdev,
 			 * This check is to make sure peer is not deleted
 			 * after processing the TLVs.
 			 */
-			if (!peer || !peer->monitor_peer)
+			if (!peer)
 				continue;
 
+			if (!peer->monitor_peer) {
+				dp_peer_unref_delete(peer,
+						     DP_MOD_ID_TX_PPDU_STATS);
+				continue;
+			}
+
 			mon_peer = peer->monitor_peer;
 			delay_ppdu = &mon_peer->delayed_ba_ppdu_stats;
 			start_tsf = ppdu_desc->ppdu_start_timestamp;
@@ -3888,9 +3894,15 @@ dp_process_ppdu_stats_sch_cmd_status_tlv(struct dp_pdev *pdev,
 			 * This check is to make sure peer is not deleted
 			 * after processing the TLVs.
 			 */
-			if (!peer || !peer->monitor_peer)
+			if (!peer)
 				continue;
 
+			if (!peer->monitor_peer) {
+				dp_peer_unref_delete(peer,
+						     DP_MOD_ID_TX_PPDU_STATS);
+				continue;
+			}
+
 			mon_peer = peer->monitor_peer;
 			if (ppdu_desc->user[i].completion_status !=
 			    HTT_PPDU_STATS_USER_STATUS_OK) {