From cce01a3bcfec33e7e56b9cdcd5024a8d70f25d8e Mon Sep 17 00:00:00 2001 From: Jeremy Cline Date: Wed, 4 Dec 2019 13:55:02 -0500 Subject: Sync up specfile, config generation, and patches Signed-off-by: Jeremy Cline --- ...e-fix-memory-leaks-in-iwl_pcie_ctxt_info_.patch | 99 ---------------------- 1 file changed, 99 deletions(-) delete mode 100644 0001-iwlwifi-pcie-fix-memory-leaks-in-iwl_pcie_ctxt_info_.patch (limited to '0001-iwlwifi-pcie-fix-memory-leaks-in-iwl_pcie_ctxt_info_.patch') 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 -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 -Signed-off-by: Luca Coelho ---- - .../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 - -- cgit