| From 758104cffc58847367bdd146e034a6300e16e567 Mon Sep 17 00:00:00 2001 |
| From: Luca Coelho <luciano.coelho@intel.com> |
| Date: Mon, 23 Dec 2019 13:00:59 +0200 |
| Subject: [PATCH] iwlwifi: fw: make pos static in iwl_sar_get_ewrd_table() loop |
| |
| commit fb3c06cfda0db68f6082f05c43d63c1fb1761af0 upstream. |
| |
| In the for loop where we are supposed to go through the entire table, |
| we are using a non-static local to keep the pos index. This makes |
| each iteration start with 3, so we always access the first item on the |
| table. Fix this by moving the variable outside of the loo so it |
| doesn't lose its value at every iteration. |
| |
| Reported-by: Colin Ian King <colin.king@canonical.com> |
| Signed-off-by: Luca Coelho <luciano.coelho@intel.com> |
| Fixes: ba3224db7803 ("iwlwifi: mvm: fix an out-of-bound access") |
| Signed-off-by: Luca Coelho <luciano.coelho@intel.com> |
| [PG: change file name for older code base.] |
| |
| diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c |
| index 884f64f46d2d..1f16ddee9efe 100644 |
| --- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c |
| +++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c |
| @@ -719,7 +719,7 @@ static int iwl_mvm_sar_get_ewrd_table(struct iwl_mvm *mvm) |
| { |
| union acpi_object *wifi_pkg, *data; |
| bool enabled; |
| - int i, n_profiles, ret, tbl_rev; |
| + int i, n_profiles, ret, tbl_rev, pos; |
| |
| data = iwl_acpi_get_object(mvm->dev, ACPI_EWRD_METHOD); |
| if (IS_ERR(data)) |
| @@ -751,9 +751,10 @@ static int iwl_mvm_sar_get_ewrd_table(struct iwl_mvm *mvm) |
| goto out_free; |
| } |
| |
| + /* the tables start at element 3 */ |
| + pos = 3; |
| + |
| for (i = 0; i < n_profiles; i++) { |
| - /* the tables start at element 3 */ |
| - int pos = 3; |
| |
| /* The EWRD profiles officially go from 2 to 4, but we |
| * save them in sar_profiles[1-3] (because we don't |
| -- |
| 2.7.4 |
| |