浏览代码

Merge "qca-wifi: Add NULL pointer access"

Linux Build Service Account 6 年之前
父节点
当前提交
a71d0065e1
共有 1 个文件被更改,包括 24 次插入2 次删除
  1. 24 2
      dp/src/dp_rate_stats.c

+ 24 - 2
dp/src/dp_rate_stats.c

@@ -144,6 +144,14 @@ wlan_peer_update_rx_rate_stats(struct wlan_soc_rate_stats_ctx *soc_stats_ctx,
 	bool idx_match = false;
 	bool idx_match = false;
 
 
 	stats_ctx = (struct wlan_peer_rate_stats_ctx *)cdp_rx_ppdu->cookie;
 	stats_ctx = (struct wlan_peer_rate_stats_ctx *)cdp_rx_ppdu->cookie;
+
+	if (qdf_unlikely(!stats_ctx)) {
+		qdf_warn("peer rate stats ctx is NULL, return");
+		qdf_warn("peer_mac:  " QDF_MAC_ADDR_STR,
+			 QDF_MAC_ADDR_ARRAY(cdp_rx_ppdu->mac_addr));
+		return;
+	}
+
 	rx_stats = &stats_ctx->rx;
 	rx_stats = &stats_ctx->rx;
 
 
 	if (qdf_unlikely(cdp_rx_ppdu->rix > DP_RATE_TABLE_SIZE)) {
 	if (qdf_unlikely(cdp_rx_ppdu->rix > DP_RATE_TABLE_SIZE)) {
@@ -227,6 +235,14 @@ wlan_peer_update_tx_rate_stats(struct wlan_soc_rate_stats_ctx *soc_stats_ctx,
 		ppdu_user = &cdp_tx_ppdu->user[user_idx];
 		ppdu_user = &cdp_tx_ppdu->user[user_idx];
 		stats_ctx = (struct wlan_peer_rate_stats_ctx *)
 		stats_ctx = (struct wlan_peer_rate_stats_ctx *)
 				ppdu_user->cookie;
 				ppdu_user->cookie;
+
+		if (qdf_unlikely(!stats_ctx)) {
+			qdf_warn("peer rate stats ctx is NULL, return");
+			qdf_warn("peer_mac: " QDF_MAC_ADDR_STR,
+				 QDF_MAC_ADDR_ARRAY(ppdu_user->mac_addr));
+			return;
+		}
+
 		tx_stats = &stats_ctx->tx;
 		tx_stats = &stats_ctx->tx;
 		RATE_STATS_LOCK_ACQUIRE(&tx_stats->lock);
 		RATE_STATS_LOCK_ACQUIRE(&tx_stats->lock);
 
 
@@ -287,12 +303,18 @@ wlan_peer_update_sojourn_stats(void *ctx,
 	uint8_t tid;
 	uint8_t tid;
 
 
 	stats_ctx = (struct wlan_peer_rate_stats_ctx *)sojourn_stats->cookie;
 	stats_ctx = (struct wlan_peer_rate_stats_ctx *)sojourn_stats->cookie;
+
+	if (qdf_unlikely(!stats_ctx)) {
+		qdf_warn("peer rate stats ctx is NULL, return");
+		return;
+	}
+
 	tx_stats = &stats_ctx->tx;
 	tx_stats = &stats_ctx->tx;
 
 
 	RATE_STATS_LOCK_ACQUIRE(&tx_stats->lock);
 	RATE_STATS_LOCK_ACQUIRE(&tx_stats->lock);
 	for (tid = 0; tid < CDP_DATA_TID_MAX; tid++) {
 	for (tid = 0; tid < CDP_DATA_TID_MAX; tid++) {
-		qdf_ewma_tx_lag_add(&tx_stats->sojourn.avg_sojourn_msdu[tid],
-				    sojourn_stats->sum_sojourn_msdu[tid]);
+		tx_stats->sojourn.avg_sojourn_msdu[tid] =
+			sojourn_stats->avg_sojourn_msdu[tid];
 
 
 		tx_stats->sojourn.sum_sojourn_msdu[tid] +=
 		tx_stats->sojourn.sum_sojourn_msdu[tid] +=
 			sojourn_stats->sum_sojourn_msdu[tid];
 			sojourn_stats->sum_sojourn_msdu[tid];