]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mac80211: fix initialization of skb->cb in ieee80211_subif_start_xmit
authorFelix Fietkau <nbd@openwrt.org>
Sat, 18 Dec 2010 18:30:48 +0000 (19:30 +0100)
committerAK <andi@firstfloor.org>
Sun, 6 Feb 2011 19:04:07 +0000 (11:04 -0800)
[ upstream commit 489ee9195a7de9e6bc833d639ff6b553ffdad90e ]

The change 'mac80211: Fix BUG in pskb_expand_head when transmitting shared skbs'
added a check for copying the skb if it's shared, however the tx info variable
still points at the cb of the old skb

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Acked-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
net/mac80211/tx.c

index 10910d62d8cd10bdb824394cf59224d9a80d48a3..1ec650bf0920407f4d90d506cc30524be9316312 100644 (file)
@@ -1668,7 +1668,7 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
 {
        struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
        struct ieee80211_local *local = sdata->local;
-       struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
+       struct ieee80211_tx_info *info;
        int ret = NETDEV_TX_BUSY, head_need;
        u16 ethertype, hdrlen,  meshhdrlen = 0;
        __le16 fc;
@@ -1956,6 +1956,7 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
        skb_set_network_header(skb, nh_pos);
        skb_set_transport_header(skb, h_pos);
 
+       info = IEEE80211_SKB_CB(skb);
        memset(info, 0, sizeof(*info));
 
        dev->trans_start = jiffies;