lkml.org 
[lkml]   [2016]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 158/210] iwlwifi: mvm: Fix paging memory leak
    Date
    4.4-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Matti Gottlieb <matti.gottlieb@intel.com>

    commit 905e36ae172c83a30894a3adefab7d4f850fcf54 upstream.

    If the opmode is stopped and started again we did not free
    the paging buffers. Fix that.
    In addition when freeing the firmware's paging download
    buffer, set the pointer to NULL.

    Signed-off-by: Matti Gottlieb <matti.gottlieb@intel.com>
    Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/wireless/iwlwifi/mvm/fw.c | 4 +++-
    drivers/net/wireless/iwlwifi/mvm/mvm.h | 3 +++
    drivers/net/wireless/iwlwifi/mvm/ops.c | 2 ++
    3 files changed, 8 insertions(+), 1 deletion(-)

    --- a/drivers/net/wireless/iwlwifi/mvm/fw.c
    +++ b/drivers/net/wireless/iwlwifi/mvm/fw.c
    @@ -106,7 +106,7 @@ static int iwl_send_tx_ant_cfg(struct iw
    sizeof(tx_ant_cmd), &tx_ant_cmd);
    }

    -static void iwl_free_fw_paging(struct iwl_mvm *mvm)
    +void iwl_free_fw_paging(struct iwl_mvm *mvm)
    {
    int i;

    @@ -126,6 +126,8 @@ static void iwl_free_fw_paging(struct iw
    get_order(mvm->fw_paging_db[i].fw_paging_size));
    }
    kfree(mvm->trans->paging_download_buf);
    + mvm->trans->paging_download_buf = NULL;
    +
    memset(mvm->fw_paging_db, 0, sizeof(mvm->fw_paging_db));
    }

    --- a/drivers/net/wireless/iwlwifi/mvm/mvm.h
    +++ b/drivers/net/wireless/iwlwifi/mvm/mvm.h
    @@ -1190,6 +1190,9 @@ void iwl_mvm_rx_umac_scan_complete_notif
    void iwl_mvm_rx_umac_scan_iter_complete_notif(struct iwl_mvm *mvm,
    struct iwl_rx_cmd_buffer *rxb);

    +/* Paging */
    +void iwl_free_fw_paging(struct iwl_mvm *mvm);
    +
    /* MVM debugfs */
    #ifdef CONFIG_IWLWIFI_DEBUGFS
    int iwl_mvm_dbgfs_register(struct iwl_mvm *mvm, struct dentry *dbgfs_dir);
    --- a/drivers/net/wireless/iwlwifi/mvm/ops.c
    +++ b/drivers/net/wireless/iwlwifi/mvm/ops.c
    @@ -645,6 +645,8 @@ static void iwl_op_mode_mvm_stop(struct
    for (i = 0; i < NVM_MAX_NUM_SECTIONS; i++)
    kfree(mvm->nvm_sections[i].data);

    + iwl_free_fw_paging(mvm);
    +
    iwl_mvm_tof_clean(mvm);

    ieee80211_free_hw(mvm->hw);

    \
     
     \ /
      Last update: 2016-04-10 21:21    [W:5.123 / U:0.088 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site