Jelajahi Sumber

qcacmn: Fix NULL dereference of peer from DP_STATS macros

Fix NULL dereference of peer from DP_STATS macros

Change-Id: I25b6269fe8e9b1deccaa38a7499167a156db6f37
CRs-Fixed: 2058483
Yun Park 7 tahun lalu
induk
melakukan
22b406cc13
2 mengubah file dengan 8 tambahan dan 6 penghapusan
  1. 7 5
      dp/wifi3.0/dp_internal.h
  2. 1 1
      dp/wifi3.0/dp_rx.c

+ 7 - 5
dp/wifi3.0/dp_internal.h

@@ -74,24 +74,26 @@ while (0)
 #ifndef DISABLE_DP_STATS
 #define DP_STATS_INC(_handle, _field, _delta) \
 { \
-	_handle->stats._field += _delta; \
+	if (likely(_handle)) \
+		_handle->stats._field += _delta; \
 }
 
 #define DP_STATS_INCC(_handle, _field, _delta, _cond) \
 { \
-	if (_cond) { \
+	if (_cond && likely(_handle)) \
 		_handle->stats._field += _delta; \
-	} \
 }
 
 #define DP_STATS_DEC(_handle, _field, _delta) \
 { \
-	_handle->stats._field -= _delta; \
+	if (likely(_handle)) \
+		_handle->stats._field -= _delta; \
 }
 
 #define DP_STATS_UPD(_handle, _field, _delta) \
 { \
-	_handle->stats._field = _delta; \
+	if (likely(_handle)) \
+		_handle->stats._field = _delta; \
 }
 
 #define DP_STATS_INC_PKT(_handle, _field, _count, _bytes) \

+ 1 - 1
dp/wifi3.0/dp_rx.c

@@ -1290,7 +1290,7 @@ done:
 			DP_STATS_INC_PKT(peer, rx.to_stack, 1,
 					pkt_len);
 
-			if ((pdev->enhanced_stats_en) &&
+			if ((pdev->enhanced_stats_en) && likely(peer) &&
 				hal_rx_attn_first_mpdu_get(rx_tlv_hdr)) {
 				if (soc->cdp_soc.ol_ops->update_dp_stats) {
 					soc->cdp_soc.ol_ops->update_dp_stats(