summaryrefslogtreecommitdiffstats
path: root/0001-iwlwifi-pcie-fix-memory-leaks-in-iwl_pcie_ctxt_info_.patch
diff options
context:
space:
mode:
Diffstat (limited to '0001-iwlwifi-pcie-fix-memory-leaks-in-iwl_pcie_ctxt_info_.patch')
-rw-r--r--0001-iwlwifi-pcie-fix-memory-leaks-in-iwl_pcie_ctxt_info_.patch99
1 files changed, 0 insertions, 99 deletions
diff --git a/0001-iwlwifi-pcie-fix-memory-leaks-in-iwl_pcie_ctxt_info_.patch b/0001-iwlwifi-pcie-fix-memory-leaks-in-iwl_pcie_ctxt_info_.patch
deleted file mode 100644
index a72e920bd..000000000
--- a/0001-iwlwifi-pcie-fix-memory-leaks-in-iwl_pcie_ctxt_info_.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 0f4f199443faca715523b0659aa536251d8b978f Mon Sep 17 00:00:00 2001
-From: Navid Emamdoost <navid.emamdoost@gmail.com>
-Date: Fri, 27 Sep 2019 15:56:04 -0500
-Subject: [PATCH] iwlwifi: pcie: fix memory leaks in
- iwl_pcie_ctxt_info_gen3_init
-
-In iwl_pcie_ctxt_info_gen3_init there are cases that the allocated dma
-memory is leaked in case of error.
-
-DMA memories prph_scratch, prph_info, and ctxt_info_gen3 are allocated
-and initialized to be later assigned to trans_pcie. But in any error case
-before such assignment the allocated memories should be released.
-
-First of such error cases happens when iwl_pcie_init_fw_sec fails.
-Current implementation correctly releases prph_scratch. But in two
-sunsequent error cases where dma_alloc_coherent may fail, such
-releases are missing.
-
-This commit adds release for prph_scratch when allocation for
-prph_info fails, and adds releases for prph_scratch and prph_info when
-allocation for ctxt_info_gen3 fails.
-
-Fixes: 2ee824026288 ("iwlwifi: pcie: support context information for 22560 devices")
-Signed-off-by: Navid Emamdoost <navid.emamdoost@gmail.com>
-Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
----
- .../intel/iwlwifi/pcie/ctxt-info-gen3.c | 36 +++++++++++++------
- 1 file changed, 25 insertions(+), 11 deletions(-)
-
-diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c
-index 75fa8a6aafee..74980382e64c 100644
---- a/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c
-+++ b/drivers/net/wireless/intel/iwlwifi/pcie/ctxt-info-gen3.c
-@@ -107,13 +107,9 @@ int iwl_pcie_ctxt_info_gen3_init(struct iwl_trans *trans,
-
- /* allocate ucode sections in dram and set addresses */
- ret = iwl_pcie_init_fw_sec(trans, fw, &prph_scratch->dram);
-- if (ret) {
-- dma_free_coherent(trans->dev,
-- sizeof(*prph_scratch),
-- prph_scratch,
-- trans_pcie->prph_scratch_dma_addr);
-- return ret;
-- }
-+ if (ret)
-+ goto err_free_prph_scratch;
-+
-
- /* Allocate prph information
- * currently we don't assign to the prph info anything, but it would get
-@@ -121,16 +117,20 @@ int iwl_pcie_ctxt_info_gen3_init(struct iwl_trans *trans,
- prph_info = dma_alloc_coherent(trans->dev, sizeof(*prph_info),
- &trans_pcie->prph_info_dma_addr,
- GFP_KERNEL);
-- if (!prph_info)
-- return -ENOMEM;
-+ if (!prph_info) {
-+ ret = -ENOMEM;
-+ goto err_free_prph_scratch;
-+ }
-
- /* Allocate context info */
- ctxt_info_gen3 = dma_alloc_coherent(trans->dev,
- sizeof(*ctxt_info_gen3),
- &trans_pcie->ctxt_info_dma_addr,
- GFP_KERNEL);
-- if (!ctxt_info_gen3)
-- return -ENOMEM;
-+ if (!ctxt_info_gen3) {
-+ ret = -ENOMEM;
-+ goto err_free_prph_info;
-+ }
-
- ctxt_info_gen3->prph_info_base_addr =
- cpu_to_le64(trans_pcie->prph_info_dma_addr);
-@@ -186,6 +186,20 @@ int iwl_pcie_ctxt_info_gen3_init(struct iwl_trans *trans,
- iwl_set_bit(trans, CSR_GP_CNTRL, CSR_AUTO_FUNC_INIT);
-
- return 0;
-+
-+err_free_prph_info:
-+ dma_free_coherent(trans->dev,
-+ sizeof(*prph_info),
-+ prph_info,
-+ trans_pcie->prph_info_dma_addr);
-+
-+err_free_prph_scratch:
-+ dma_free_coherent(trans->dev,
-+ sizeof(*prph_scratch),
-+ prph_scratch,
-+ trans_pcie->prph_scratch_dma_addr);
-+ return ret;
-+
- }
-
- void iwl_pcie_ctxt_info_gen3_free(struct iwl_trans *trans)
---
-2.23.0
-