Message ID | 20210119100621.439134-1-stf_xl@wp.pl (mailing list archive) |
---|---|
State | Accepted |
Commit | 4832bb371c4175ffb506a96accbb08ef2b2466e7 |
Delegated to: | Kalle Valo |
Headers | show |
Series | iwl4965: do not process non-QOS frames on txq->sched_retry path | expand |
stf_xl@wp.pl wrote: > From: Stanislaw Gruszka <stf_xl@wp.pl> > > We have already WARN_ON(!qc) for non-QOS frame on txq->sched_retry path, > but we continue to process, what makes no sense since tid is not > initialized. Non QOS frame should never happen when aggregation > is enabled on queue, so do not process that. > > Patch should fix smatch warning: > drivers/net/wireless/intel/iwlegacy/4965-mac.c:2822 il4965_hdl_tx() error: uninitialized symbol 'tid'. > > Reported-by: kernel test robot <lkp@intel.com> > Reported-by: Dan Carpenter <dan.carpenter@oracle.com> > Signed-off-by: Stanislaw Gruszka <stf_xl@wp.pl> Patch applied to wireless-drivers-next.git, thanks. 4832bb371c41 iwl4965: do not process non-QOS frames on txq->sched_retry path
diff --git a/drivers/net/wireless/intel/iwlegacy/4965-mac.c b/drivers/net/wireless/intel/iwlegacy/4965-mac.c index 28675a4ad861..98cd06287b43 100644 --- a/drivers/net/wireless/intel/iwlegacy/4965-mac.c +++ b/drivers/net/wireless/intel/iwlegacy/4965-mac.c @@ -2813,8 +2813,10 @@ il4965_hdl_tx(struct il_priv *il, struct il_rx_buf *rxb) spin_lock_irqsave(&il->sta_lock, flags); if (txq->sched_retry) { const u32 scd_ssn = il4965_get_scd_ssn(tx_resp); - struct il_ht_agg *agg = NULL; - WARN_ON(!qc); + struct il_ht_agg *agg; + + if (WARN_ON(!qc)) + goto out; agg = &il->stations[sta_id].tid[tid].agg; @@ -2830,9 +2832,7 @@ il4965_hdl_tx(struct il_priv *il, struct il_rx_buf *rxb) D_TX_REPLY("Retry scheduler reclaim scd_ssn " "%d idx %d\n", scd_ssn, idx); freed = il4965_tx_queue_reclaim(il, txq_id, idx); - if (qc) - il4965_free_tfds_in_queue(il, sta_id, tid, - freed); + il4965_free_tfds_in_queue(il, sta_id, tid, freed); if (il->mac80211_registered && il_queue_space(&txq->q) > txq->q.low_mark && @@ -2862,6 +2862,7 @@ il4965_hdl_tx(struct il_priv *il, struct il_rx_buf *rxb) il_queue_space(&txq->q) > txq->q.low_mark) il_wake_queue(il, txq); } +out: if (qc && likely(sta_id != IL_INVALID_STATION)) il4965_txq_check_empty(il, sta_id, tid, txq_id);