1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-12-27 01:06:46 +02:00
openwrt-xburst/package/madwifi/patches/331-memory_alloc.patch
nbd e693bef4a8 sync with madwifi commit 3362
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@10519 3c298f89-4303-0410-b956-a3cf2f4a3e73
2008-02-23 14:26:55 +00:00

39 lines
1.1 KiB
Diff

Index: madwifi-trunk-r3314/ath/if_ath.c
===================================================================
--- madwifi-trunk-r3314.orig/ath/if_ath.c 2008-02-20 18:10:52.499506168 +0100
+++ madwifi-trunk-r3314/ath/if_ath.c 2008-02-20 18:10:52.731519391 +0100
@@ -3315,17 +3315,18 @@
* without affecting any other bridge ports. */
if (skb_cloned(skb)) {
/* Remember the original SKB so we can free up our references */
- struct sk_buff *skb_orig = skb;
- skb = skb_copy(skb, GFP_ATOMIC);
- if (skb == NULL) {
+ struct sk_buff *skb_new;
+ skb_new = skb_copy(skb, GFP_ATOMIC);
+ if (skb_new == NULL) {
DPRINTF(sc, ATH_DEBUG_XMIT,
"Dropping; skb_copy failure.\n");
/* No free RAM, do not requeue! */
goto hardstart_fail;
}
- ieee80211_skb_copy_noderef(skb_orig, skb);
- ieee80211_dev_kfree_skb(&skb_orig);
- }
+ ieee80211_skb_copy_noderef(skb, skb_new);
+ ieee80211_dev_kfree_skb(&skb);
+ skb = skb_new;
+ }
eh = (struct ether_header *)skb->data;
#ifdef ATH_SUPERG_FF
@@ -3596,6 +3597,8 @@
sc->sc_stats.ast_tx_mgmt++;
return 0;
bad:
+ if (skb)
+ ieee80211_dev_kfree_skb(&skb);
ath_return_txbuf(sc, &bf);
return error;
}