summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/intel/iwlwifi/queue
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2021-01-22 15:52:42 +0300
committerKalle Valo <kvalo@codeaurora.org>2021-01-25 16:59:27 +0300
commit0bed6a2a14afaae240cc431e49c260568488b51c (patch)
tree6d7d752695eeecae4775f3aa0d2ab81eca48444a /drivers/net/wireless/intel/iwlwifi/queue
parent7a21b1d4a728a483f07c638ccd8610d4b4f12684 (diff)
downloadlinux-0bed6a2a14afaae240cc431e49c260568488b51c.tar.xz
iwlwifi: queue: bail out on invalid freeing
If we find an entry without an SKB, we currently continue, but that will just result in an infinite loop since we won't increment the read pointer, and will try the same thing over and over again. Fix this. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Link: https://lore.kernel.org/r/iwlwifi.20210122144849.abe2dedcc3ac.Ia6b03f9eeb617fd819e56dd5376f4bb8edc7b98a@changeid
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/queue')
-rw-r--r--drivers/net/wireless/intel/iwlwifi/queue/tx.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/queue/tx.c b/drivers/net/wireless/intel/iwlwifi/queue/tx.c
index 62c0c4cbe481..7ff1bb0ccc9c 100644
--- a/drivers/net/wireless/intel/iwlwifi/queue/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/queue/tx.c
@@ -840,10 +840,8 @@ void iwl_txq_gen2_unmap(struct iwl_trans *trans, int txq_id)
int idx = iwl_txq_get_cmd_index(txq, txq->read_ptr);
struct sk_buff *skb = txq->entries[idx].skb;
- if (WARN_ON_ONCE(!skb))
- continue;
-
- iwl_txq_free_tso_page(trans, skb);
+ if (!WARN_ON_ONCE(!skb))
+ iwl_txq_free_tso_page(trans, skb);
}
iwl_txq_gen2_free_tfd(trans, txq);
txq->read_ptr = iwl_txq_inc_wrap(trans, txq->read_ptr);