فهرست منبع

qcacmn: Fix KW Null dereferencing issues

Fix static analysis KW issues related to
NULL dereferencing.
CRs-fixed: 2220248

Change-Id: Iecf37218782133eaf94f81d975478d71e308eca3
sumedh baikady 7 سال پیش
والد
کامیت
eca2de6c6d
2فایلهای تغییر یافته به همراه19 افزوده شده و 4 حذف شده
  1. 7 1
      dp/wifi3.0/dp_rx_mon_dest.c
  2. 12 3
      dp/wifi3.0/dp_rx_mon_status.c

+ 7 - 1
dp/wifi3.0/dp_rx_mon_dest.c

@@ -795,7 +795,13 @@ void dp_rx_mon_dest_process(struct dp_soc *soc, uint32_t mac_id, uint32_t quota)
 					  ppdu_id, pdev->ppdu_info.com_info.ppdu_id);
 			break;
 		}
-
+		if (qdf_unlikely(head_msdu == NULL) ||
+			qdf_unlikely(tail_msdu == NULL)) {
+			QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
+			"%s %d : Head_msdu or Tail_msdu is NULL !!\n",
+			__func__, __LINE__);
+			break;
+		}
 		dp_rx_mon_deliver(soc, mac_id, head_msdu, tail_msdu);
 
 		rxdma_dst_ring_desc = hal_srng_dst_get_next(hal_soc,

+ 12 - 3
dp/wifi3.0/dp_rx_mon_status.c

@@ -724,13 +724,22 @@ QDF_STATUS dp_rx_mon_status_buffers_replenish(struct dp_soc *dp_soc,
 		paddr = qdf_nbuf_get_frag_paddr(rx_netbuf, 0);
 
 		next = (*desc_list)->next;
+		rxdma_ring_entry = hal_srng_src_get_next(dp_soc->hal_soc,
+							 rxdma_srng);
+
+		if (qdf_unlikely(rxdma_ring_entry == NULL)) {
+			QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
+					"[%s][%d] rxdma_ring_entry is NULL, count - %d\n",
+					__func__, __LINE__, count);
+			qdf_nbuf_unmap_single(dp_soc->osdev, rx_netbuf,
+					      QDF_DMA_BIDIRECTIONAL);
+			qdf_nbuf_free(rx_netbuf);
+			break;
+		}
 
 		(*desc_list)->rx_desc.nbuf = rx_netbuf;
 		(*desc_list)->rx_desc.in_use = 1;
-
 		count++;
-		rxdma_ring_entry = hal_srng_src_get_next(dp_soc->hal_soc,
-							 rxdma_srng);
 
 		hal_rxdma_buff_addr_info_set(rxdma_ring_entry, paddr,
 			(*desc_list)->rx_desc.cookie, owner);