diff --git a/target_if/cp_stats/src/target_if_mc_cp_stats.c b/target_if/cp_stats/src/target_if_mc_cp_stats.c index 0b1fb62c94c6..794ddc5746de 100644 --- a/target_if/cp_stats/src/target_if_mc_cp_stats.c +++ b/target_if/cp_stats/src/target_if_mc_cp_stats.c @@ -324,6 +324,7 @@ static QDF_STATUS target_if_cp_stats_extract_vdev_chain_rssi_stats( &rssi_stats); if (QDF_IS_STATUS_ERROR(status)) continue; + ev->vdev_chain_rssi[i].vdev_id = rssi_stats.vdev_id; for (j = 0; j < MAX_NUM_CHAINS; j++) { dat_snr = rssi_stats.rssi_avg_data[j]; diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index 93f96e2d6565..a1c4acdff1b2 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -9107,6 +9107,8 @@ static QDF_STATUS extract_per_chain_rssi_stats_tlv(wmi_unified_t wmi_handle, data = ((uint8_t *)(&rssi_event[1])) + WMI_TLV_HDR_SIZE; fw_rssi_stats = &((wmi_rssi_stats *)data)[index]; + if (fw_rssi_stats->vdev_id >= WLAN_UMAC_PDEV_MAX_VDEVS) + return QDF_STATUS_E_INVAL; rssi_stats->vdev_id = fw_rssi_stats->vdev_id; qdf_mem_copy(rssi_stats->rssi_avg_beacon,