| From 0fa9391ab317d4899dffc81e8ddf55a5aeaf4e5d Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 3 Sep 2018 20:07:44 +0300 |
| Subject: ath10k: avoid possible memory access violation |
| |
| From: K.T.VIJAYAKUMAAR <vijay.bvb@samsung.com> |
| |
| [ Upstream commit 97c69a70dc2cecb2c3b96a66529e0082dabc2d2c ] |
| |
| array "ctl_power_table" access index "pream" is initialized with -1 and |
| is raised as a static analysis tool issue. |
| [drivers\net\wireless\ath\ath10k\wmi.c:4719] -> |
| [drivers\net\wireless\ath\ath10k\wmi.c:4730]: (error) Array index -1 is |
| out of bounds. |
| |
| Since the "pream" index for accessing ctl_power_table array is initialized |
| with -1, there is a chance of memory access violation for the cases below. |
| 1) wmi_pdev_tpc_final_table_event change frequency is between 2483 and 5180 |
| 2) pream_idx is out of the enumeration ranges of wmi_tpc_pream_2ghz, |
| wmi_tpc_pream_5ghz |
| |
| Signed-off-by: K.T.VIJAYAKUMAAR <vijay.bvb@samsung.com> |
| [kvalo@codeaurora.org: clean up the warning message] |
| Signed-off-by: Kalle Valo <kvalo@codeaurora.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/wireless/ath/ath10k/wmi.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c |
| index 9f31b9a108507..583147f00fa4e 100644 |
| --- a/drivers/net/wireless/ath/ath10k/wmi.c |
| +++ b/drivers/net/wireless/ath/ath10k/wmi.c |
| @@ -4785,6 +4785,13 @@ ath10k_wmi_tpc_final_get_rate(struct ath10k *ar, |
| } |
| } |
| |
| + if (pream == -1) { |
| + ath10k_warn(ar, "unknown wmi tpc final index and frequency: %u, %u\n", |
| + pream_idx, __le32_to_cpu(ev->chan_freq)); |
| + tpc = 0; |
| + goto out; |
| + } |
| + |
| if (pream == 4) |
| tpc = min_t(u8, ev->rates_array[rate_idx], |
| ev->max_reg_allow_pow[ch]); |
| -- |
| 2.20.1 |
| |