mac80211: sparse RCU annotations
[pandora-kernel.git] / net / mac80211 / tx.c
index e1a39ed..6eeaaa2 100644 (file)
@@ -1147,7 +1147,7 @@ static bool ieee80211_tx_prep_agg(struct ieee80211_tx_data *tx,
                 *     packet pass through because splicing the frames
                 *     back is already done.
                 */
-               tid_tx = tx->sta->ampdu_mlme.tid_tx[tid];
+               tid_tx = rcu_dereference_protected_tid_tx(tx->sta, tid);
 
                if (!tid_tx) {
                        /* do nothing, let packet pass through */
@@ -1751,6 +1751,7 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
                        ret = NETDEV_TX_OK;
                        goto fail;
                }
+               rcu_read_lock();
                if (!is_multicast_ether_addr(skb->data))
                        mppath = mpp_path_lookup(skb->data, sdata);
 
@@ -1765,13 +1766,13 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
                    !(mppath && compare_ether_addr(mppath->mpp, skb->data))) {
                        hdrlen = ieee80211_fill_mesh_addresses(&hdr, &fc,
                                        skb->data, skb->data + ETH_ALEN);
+                       rcu_read_unlock();
                        meshhdrlen = ieee80211_new_mesh_header(&mesh_hdr,
                                        sdata, NULL, NULL);
                } else {
                        int is_mesh_mcast = 1;
                        const u8 *mesh_da;
 
-                       rcu_read_lock();
                        if (is_multicast_ether_addr(skb->data))
                                /* DA TA mSA AE:SA */
                                mesh_da = skb->data;