lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 213/846] wireless: iwlwifi: Fix a double free in iwl_txq_dyn_alloc_dma
    Date
    From: Lv Yunlong <lyl2019@mail.ustc.edu.cn>

    [ Upstream commit f973795a8d19cbf3d03807704eb7c6ff65788d5a ]

    In iwl_txq_dyn_alloc_dma, txq->tfds is freed at first time by:
    iwl_txq_alloc()->goto err_free_tfds->dma_free_coherent(). But
    it forgot to set txq->tfds to NULL.

    Then the txq->tfds is freed again in iwl_txq_dyn_alloc_dma by:
    goto error->iwl_txq_gen2_free_memory()->dma_free_coherent().

    My patch sets txq->tfds to NULL after the first free to avoid the
    double free.

    Fixes: 0cd1ad2d7fd41 ("iwlwifi: move all bus-independent TX functions to common code")
    Signed-off-by: Lv Yunlong <lyl2019@mail.ustc.edu.cn>
    Link: https://lore.kernel.org/r/20210403054755.4781-1-lyl2019@mail.ustc.edu.cn
    Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/intel/iwlwifi/queue/tx.c | 1 +
    1 file changed, 1 insertion(+)

    diff --git a/drivers/net/wireless/intel/iwlwifi/queue/tx.c b/drivers/net/wireless/intel/iwlwifi/queue/tx.c
    index 451b060693501..0f3526b0c5b00 100644
    --- a/drivers/net/wireless/intel/iwlwifi/queue/tx.c
    +++ b/drivers/net/wireless/intel/iwlwifi/queue/tx.c
    @@ -1072,6 +1072,7 @@ int iwl_txq_alloc(struct iwl_trans *trans, struct iwl_txq *txq, int slots_num,
    return 0;
    err_free_tfds:
    dma_free_coherent(trans->dev, tfd_sz, txq->tfds, txq->dma_addr);
    + txq->tfds = NULL;
    error:
    if (txq->entries && cmd_queue)
    for (i = 0; i < slots_num; i++)
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-24 23:41    [W:4.027 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site