mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-04 02:02:28 +09:00
iwlwifi: pcie: NULLify pointers after free
Remember that those pointers have been freed by setting them to NULL. Otherwise, we'd keep rxq pointing to random memory which would prevent us from trying to re-allocate the Rx resources if we call rx_alloc again. Also, propagate the allocation failure to the caller of iwl_pcie_nic_init so that we won't go further in the start flow. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Link: https://lore.kernel.org/r/iwlwifi.20210210135352.996b400d2f1c.I630379c504644700322f57b259383ae0af8d1975@changeid Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
This commit is contained in:
committed by
Luca Coelho
parent
28db186206
commit
9cf671d60f
@@ -834,8 +834,11 @@ err:
|
||||
trans_pcie->base_rb_stts_dma = 0;
|
||||
}
|
||||
kfree(trans_pcie->rx_pool);
|
||||
trans_pcie->rx_pool = NULL;
|
||||
kfree(trans_pcie->global_table);
|
||||
trans_pcie->global_table = NULL;
|
||||
kfree(trans_pcie->rxq);
|
||||
trans_pcie->rxq = NULL;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -523,11 +523,15 @@ static int iwl_pcie_nic_init(struct iwl_trans *trans)
|
||||
iwl_op_mode_nic_config(trans->op_mode);
|
||||
|
||||
/* Allocate the RX queue, or reset if it is already allocated */
|
||||
iwl_pcie_rx_init(trans);
|
||||
ret = iwl_pcie_rx_init(trans);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Allocate or reset and init all Tx and Command queues */
|
||||
if (iwl_pcie_tx_init(trans))
|
||||
if (iwl_pcie_tx_init(trans)) {
|
||||
iwl_pcie_rx_free(trans);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
if (trans->trans_cfg->base_params->shadow_reg_enable) {
|
||||
/* enable shadow regs in HW */
|
||||
|
||||
Reference in New Issue
Block a user