mwifiex: correct histogram data with appropriate index
authorXinming Hu <huxm@marvell.com>
Fri, 18 May 2018 07:38:54 +0000 (15:38 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 3 Aug 2018 05:55:19 +0000 (07:55 +0200)
[ Upstream commit 30bfce0b63fa68c14ae1613eb9d259fa18644074 ]

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>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wireless/marvell/mwifiex/util.c

index 18fbb96a46e94f290dbf173e1e9db1ceaffc5487..d75756c68e16e999af48cfb304e274a7d6d47d37 100644 (file)
@@ -723,12 +723,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 */