diff options
author | Luca Coelho | 2017-05-03 14:12:09 +0200 |
---|---|---|
committer | Luca Coelho | 2017-06-23 11:03:13 +0200 |
commit | 946af0079cd260546d3773e7ff5409f49949371d (patch) | |
tree | 6ef74a03e076cf5882f97236f3e3ee1e75eaef00 /drivers/net/wireless/intel/iwlwifi/mvm/nvm.c | |
parent | iwlwifi: remove useless iwl_free_nvm_data() function (diff) | |
download | kernel-qcow2-linux-946af0079cd260546d3773e7ff5409f49949371d.tar.gz kernel-qcow2-linux-946af0079cd260546d3773e7ff5409f49949371d.tar.xz kernel-qcow2-linux-946af0079cd260546d3773e7ff5409f49949371d.zip |
iwlwifi: mvm: fix nvm_data leak
We allocate nvm_data in iwl_mvm_nvm_get_from_fw(). If something goes
wrong after the allocation (i.e. if no valid MAC address is valid), we
should free nvm_data before returning an error.
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/nvm.c')
-rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/nvm.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c b/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c index ad8bd90deed2..efdcffbaac6f 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/nvm.c @@ -596,7 +596,7 @@ int iwl_mvm_nvm_get_from_fw(struct iwl_mvm *mvm) if (!is_valid_ether_addr(mvm->nvm_data->hw_addr)) { IWL_ERR(trans, "no valid mac address was found\n"); ret = -EINVAL; - goto out; + goto err_free; } /* Initialize general data */ @@ -628,7 +628,11 @@ int iwl_mvm_nvm_get_from_fw(struct iwl_mvm *mvm) mvm->nvm_data->valid_rx_ant & mvm->fw->valid_rx_ant, rsp->regulatory.lar_enabled && lar_fw_supported); - ret = 0; + iwl_free_resp(&hcmd); + return 0; + +err_free: + kfree(mvm->nvm_data); out: iwl_free_resp(&hcmd); return ret; |