Skip to content

Commit

Permalink
iwlwifi: queue: bail out on invalid freeing
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Johannes Berg authored and Kalle Valo committed Jan 25, 2021
1 parent 7a21b1d commit 0bed6a2
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions drivers/net/wireless/intel/iwlwifi/queue/tx.c
Original file line number Diff line number Diff line change
@@ -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);

0 comments on commit 0bed6a2

Please sign in to comment.