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
diff --git a/dp/wifi3.0/dp_internal.h b/dp/wifi3.0/dp_internal.h
index c553b7a..d6f241f 100644
--- a/dp/wifi3.0/dp_internal.h
+++ b/dp/wifi3.0/dp_internal.h
@@ -74,24 +74,26 @@
#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) \
diff --git a/dp/wifi3.0/dp_rx.c b/dp/wifi3.0/dp_rx.c
index 42b8877..862655d 100644
--- a/dp/wifi3.0/dp_rx.c
+++ b/dp/wifi3.0/dp_rx.c
@@ -1290,7 +1290,7 @@
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(