浏览代码

qcacmn: Fix uninitialized srng access in monitor mode

In monitor mode buffer replenish ring is accessed without
getting initialized for configuring low threshold value.
Add check to avoid uninitialized srng pointer access.

Change-Id: If5dc98d4c1db939ef762749392ec42d46a4ae1f3
CRs-Fixed: 2704586
Karthik Kantamneni 5 年之前
父节点
当前提交
e53dbab838
共有 1 个文件被更改,包括 9 次插入6 次删除
  1. 9 6
      dp/wifi3.0/dp_main.c

+ 9 - 6
dp/wifi3.0/dp_main.c

@@ -6508,12 +6508,15 @@ static QDF_STATUS dp_vdev_set_monitor_mode(struct cdp_soc_t *soc,
 		 * configured.
 		 */
 		mon_buf_ring = &pdev->soc->rxdma_mon_buf_ring[mac_for_pdev];
-		num_entries = mon_buf_ring->num_entries;
-		hal_set_low_threshold(pdev->soc->rxdma_mon_buf_ring[mac_for_pdev].hal_srng,
-				      num_entries >> 3);
-		htt_srng_setup(pdev->soc->htt_handle, pdev->pdev_id,
-			       pdev->soc->rxdma_mon_buf_ring[mac_for_pdev]
-			       .hal_srng, RXDMA_MONITOR_BUF);
+		if (mon_buf_ring->hal_srng) {
+			num_entries = mon_buf_ring->num_entries;
+			hal_set_low_threshold(mon_buf_ring->hal_srng,
+					      num_entries >> 3);
+			htt_srng_setup(pdev->soc->htt_handle,
+				       pdev->pdev_id,
+				       mon_buf_ring->hal_srng,
+				       RXDMA_MONITOR_BUF);
+		}
 	}
 
 	dp_soc_config_full_mon_mode(pdev, DP_FULL_MON_ENABLE);