diff options
author | Felix Fietkau <nbd@openwrt.org> | 2010-12-18 13:30:48 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-12-20 14:52:17 -0500 |
commit | 489ee9195a7de9e6bc833d639ff6b553ffdad90e (patch) | |
tree | fe32219b2530610e70f5fe2923f96f565b8b987a /net/mac80211 | |
parent | ae29fbb189c7a80677500c718c9ce08095ccde01 (diff) |
mac80211: fix initialization of skb->cb in ieee80211_subif_start_xmit
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>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/tx.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index 807dcd06e268..8d01d21dff1e 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1739,7 +1739,7 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, | |||
1739 | { | 1739 | { |
1740 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); | 1740 | struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); |
1741 | struct ieee80211_local *local = sdata->local; | 1741 | struct ieee80211_local *local = sdata->local; |
1742 | struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); | 1742 | struct ieee80211_tx_info *info; |
1743 | int ret = NETDEV_TX_BUSY, head_need; | 1743 | int ret = NETDEV_TX_BUSY, head_need; |
1744 | u16 ethertype, hdrlen, meshhdrlen = 0; | 1744 | u16 ethertype, hdrlen, meshhdrlen = 0; |
1745 | __le16 fc; | 1745 | __le16 fc; |
@@ -2028,6 +2028,7 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, | |||
2028 | skb_set_network_header(skb, nh_pos); | 2028 | skb_set_network_header(skb, nh_pos); |
2029 | skb_set_transport_header(skb, h_pos); | 2029 | skb_set_transport_header(skb, h_pos); |
2030 | 2030 | ||
2031 | info = IEEE80211_SKB_CB(skb); | ||
2031 | memset(info, 0, sizeof(*info)); | 2032 | memset(info, 0, sizeof(*info)); |
2032 | 2033 | ||
2033 | dev->trans_start = jiffies; | 2034 | dev->trans_start = jiffies; |