Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 946af007 authored by Luca Coelho's avatar Luca Coelho
Browse files

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: default avatarLuca Coelho <luciano.coelho@intel.com>
parent 1dad3e0a
Loading
Loading
Loading
Loading
+6 −2
Original line number Original line Diff line number Diff line
@@ -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)) {
	if (!is_valid_ether_addr(mvm->nvm_data->hw_addr)) {
		IWL_ERR(trans, "no valid mac address was found\n");
		IWL_ERR(trans, "no valid mac address was found\n");
		ret = -EINVAL;
		ret = -EINVAL;
		goto out;
		goto err_free;
	}
	}


	/* Initialize general data */
	/* 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,
			mvm->nvm_data->valid_rx_ant & mvm->fw->valid_rx_ant,
			rsp->regulatory.lar_enabled && lar_fw_supported);
			rsp->regulatory.lar_enabled && lar_fw_supported);


	ret = 0;
	iwl_free_resp(&hcmd);
	return 0;

err_free:
	kfree(mvm->nvm_data);
out:
out:
	iwl_free_resp(&hcmd);
	iwl_free_resp(&hcmd);
	return ret;
	return ret;