diff options
author | Stanislaw Gruszka <sgruszka@redhat.com> | 2011-02-28 14:33:14 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-02-28 14:06:56 -0500 |
commit | 8a032c132b7ca011813df7c441b4a6fc89e5baee (patch) | |
tree | 5d716fbbd4c232c469da47e109752c8ee52bb57e /drivers/net/wireless/iwlegacy/iwl-4965-tx.c | |
parent | 387f3381f732d8fa1b62213ae3276f2ae712dbe2 (diff) | |
download | talos-op-linux-8a032c132b7ca011813df7c441b4a6fc89e5baee.tar.gz talos-op-linux-8a032c132b7ca011813df7c441b4a6fc89e5baee.zip |
iwlegacy: fix dma mappings and skbs leak
Fix possible dma mappings and skbs introduced by commit
470058e0ad82fcfaaffd57307d8bf8c094e8e9d7 "iwlwifi: avoid Tx queue
memory allocation in interface down".
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Acked-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlegacy/iwl-4965-tx.c')
-rw-r--r-- | drivers/net/wireless/iwlegacy/iwl-4965-tx.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/wireless/iwlegacy/iwl-4965-tx.c b/drivers/net/wireless/iwlegacy/iwl-4965-tx.c index 829db91896b0..5c40502f869a 100644 --- a/drivers/net/wireless/iwlegacy/iwl-4965-tx.c +++ b/drivers/net/wireless/iwlegacy/iwl-4965-tx.c @@ -698,7 +698,7 @@ void iwl4965_txq_ctx_reset(struct iwl_priv *priv) */ void iwl4965_txq_ctx_stop(struct iwl_priv *priv) { - int ch; + int ch, txq_id; unsigned long flags; /* Turn off all Tx DMA fifos */ @@ -719,6 +719,16 @@ void iwl4965_txq_ctx_stop(struct iwl_priv *priv) FH_TSSR_TX_STATUS_REG)); } spin_unlock_irqrestore(&priv->lock, flags); + + if (!priv->txq) + return; + + /* Unmap DMA from host system and free skb's */ + for (txq_id = 0; txq_id < priv->hw_params.max_txq_num; txq_id++) + if (txq_id == priv->cmd_queue) + iwl_legacy_cmd_queue_unmap(priv); + else + iwl_legacy_tx_queue_unmap(priv, txq_id); } /* |