ath10k: implement updating shared htt txq state
Michal Kazior
michal.kazior at tieto.com
Mon Apr 11 00:33:43 PDT 2016
On 11 April 2016 at 09:12, Dan Carpenter <dan.carpenter at oracle.com> wrote:
> Hello Michal Kazior,
>
> This is a semi-automatic email about new static checker warnings.
>
> The patch c1a43d9720d8: "ath10k: implement updating shared htt txq
> state" from Mar 6, 2016, leads to the following Smatch complaint:
>
> drivers/net/wireless/ath/ath10k/htt_tx.c:70 __ath10k_htt_tx_txq_recalc()
> warn: variable dereferenced before check 'txq->sta' (see line 52)
>
> drivers/net/wireless/ath/ath10k/htt_tx.c
> 51 struct ath10k *ar = hw->priv;
> 52 struct ath10k_sta *arsta = (void *)txq->sta->drv_priv;
> ^^^^^^^^^^
> New dererence.
>
> 53 struct ath10k_vif *arvif = (void *)txq->vif->drv_priv;
> 54 unsigned long frame_cnt;
> 55 unsigned long byte_cnt;
> 56 int idx;
> 57 u32 bit;
> 58 u16 peer_id;
> 59 u8 tid;
> 60 u8 count;
> 61
> 62 lockdep_assert_held(&ar->htt.tx_lock);
> 63
> 64 if (!ar->htt.tx_q_state.enabled)
> 65 return;
> 66
> 67 if (ar->htt.tx_q_state.mode != HTT_TX_MODE_SWITCH_PUSH_PULL)
> 68 return;
> 69
> 70 if (txq->sta)
> ^^^^^^^^
> New check.
>
> 71 peer_id = arsta->peer_id;
> 72 else
>
> There are several new warnings. See also:
This is a false positive.
The `txq->sta->drv_priv` is a dynamic array which is basically equal
to `(void *)txq->sta + offsetof(struct ieee80211_sta, drv_priv)`.
Michał
More information about the ath10k
mailing list