Kaynağa Gözat

qcacld-3.0: Avoid NULL pointer dereference when ASSERT disabled

Propagation from qcacld-2.0 to qcacld-3.0.

Avoid NULL pointer dereference when ASSERT is disabled by adding
extra handling in epping_tx_complete_multiple.

Change-Id: I06696bb2588620244fafde431c4cd56bcb8a4301
CRs-fixed: 1038668
Himanshu Agarwal 8 yıl önce
ebeveyn
işleme
5e302a7e6e
1 değiştirilmiş dosya ile 24 ekleme ve 8 silme
  1. 24 8
      core/utils/epping/src/epping_tx.c

+ 24 - 8
core/utils/epping/src/epping_tx.c

@@ -336,15 +336,31 @@ void epping_tx_complete_multiple(void *ctx, HTC_PACKET_QUEUE *pPacketQueue)
 		pktSkb = GET_HTC_PACKET_NET_BUF_CONTEXT(htc_pkt);
 		cookie = htc_pkt->pPktContext;
 
-		ASSERT(pktSkb);
-		ASSERT(htc_pkt->pBuffer == qdf_nbuf_data(pktSkb));
-
-		/* add this to the list, use faster non-lock API */
-		qdf_nbuf_queue_add(&skb_queue, pktSkb);
-
-		if (A_SUCCESS(status)) {
-			ASSERT(htc_pkt->ActualLength == qdf_nbuf_len(pktSkb));
+		if (!pktSkb) {
+			EPPING_LOG(QDF_TRACE_LEVEL_ERROR,
+				 "%s: pktSkb is NULL", __func__);
+			ASSERT(0);
+		} else {
+			if (htc_pkt->pBuffer != qdf_nbuf_data(pktSkb)) {
+				EPPING_LOG(QDF_TRACE_LEVEL_ERROR,
+				  "%s: htc_pkt buffer not equal to skb->data",
+				  __func__);
+				ASSERT(0);
+			}
+			/* add this to the list, use faster non-lock API */
+			qdf_nbuf_queue_add(&skb_queue, pktSkb);
+
+			if (A_SUCCESS(status)) {
+				if (htc_pkt->ActualLength !=
+						qdf_nbuf_len(pktSkb)) {
+					EPPING_LOG(QDF_TRACE_LEVEL_ERROR,
+					  "%s: htc_pkt length not equal to skb->len",
+					  __func__);
+					ASSERT(0);
+				}
+			}
 		}
+
 		EPPING_LOG(QDF_TRACE_LEVEL_INFO,
 			   "%s skb=%p data=%p len=0x%x eid=%d ",
 			   __func__, pktSkb, htc_pkt->pBuffer,