mwifiex: correct histogram data with appropriate index
authorXinming Hu <huxm@marvell.com>
Fri, 18 May 2018 07:38:54 +0000 (15:38 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 23 May 2018 08:00:09 +0000 (11:00 +0300)
Correct snr/nr/rssi data index to avoid possible buffer underflow.

Signed-off-by: Xinming Hu <huxm@marvell.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/marvell/mwifiex/util.c

index 0cd68ff..51ccf10 100644 (file)
@@ -708,12 +708,14 @@ void mwifiex_hist_data_set(struct mwifiex_private *priv, u8 rx_rate, s8 snr,
                           s8 nflr)
 {
        struct mwifiex_histogram_data *phist_data = priv->hist_data;
+       s8 nf   = -nflr;
+       s8 rssi = snr - nflr;
 
        atomic_inc(&phist_data->num_samples);
        atomic_inc(&phist_data->rx_rate[rx_rate]);
-       atomic_inc(&phist_data->snr[snr]);
-       atomic_inc(&phist_data->noise_flr[128 + nflr]);
-       atomic_inc(&phist_data->sig_str[nflr - snr]);
+       atomic_inc(&phist_data->snr[snr + 128]);
+       atomic_inc(&phist_data->noise_flr[nf + 128]);
+       atomic_inc(&phist_data->sig_str[rssi + 128]);
 }
 
 /* function to reset histogram data during init/reset */