| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Johannes Berg <johannes.berg@intel.com> |
| Date: Wed, 22 Mar 2017 22:00:10 +0100 |
| Subject: iwlwifi: tt: move ucode_loaded check under mutex |
| |
| From: Johannes Berg <johannes.berg@intel.com> |
| |
| |
| [ Upstream commit d9954405758a0cbbe258d9b4d4dc12a06fa48a28 ] |
| |
| The ucode_loaded check should be under the mutex, since it can |
| otherwise change state after we looked at it and before we got |
| the mutex. Fix that. |
| |
| Fixes: 5c89e7bc557e ("iwlwifi: mvm: add registration to cooling device") |
| Signed-off-by: Johannes Berg <johannes.berg@intel.com> |
| Signed-off-by: Luca Coelho <luciano.coelho@intel.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/wireless/intel/iwlwifi/mvm/tt.c | 8 +++++--- |
| 1 file changed, 5 insertions(+), 3 deletions(-) |
| |
| --- a/drivers/net/wireless/intel/iwlwifi/mvm/tt.c |
| +++ b/drivers/net/wireless/intel/iwlwifi/mvm/tt.c |
| @@ -790,11 +790,13 @@ static int iwl_mvm_tcool_set_cur_state(s |
| struct iwl_mvm *mvm = (struct iwl_mvm *)(cdev->devdata); |
| int ret; |
| |
| - if (!mvm->ucode_loaded || !(mvm->cur_ucode == IWL_UCODE_REGULAR)) |
| - return -EIO; |
| - |
| mutex_lock(&mvm->mutex); |
| |
| + if (!mvm->ucode_loaded || !(mvm->cur_ucode == IWL_UCODE_REGULAR)) { |
| + ret = -EIO; |
| + goto unlock; |
| + } |
| + |
| if (new_state >= ARRAY_SIZE(iwl_mvm_cdev_budgets)) { |
| ret = -EINVAL; |
| goto unlock; |