diff options
author | Patrick McHardy <kaber@trash.net> | 2009-06-12 01:20:01 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-06-13 04:18:42 -0400 |
commit | 98ca4a46d27348476c9196ebc0a0c5297431d90f (patch) | |
tree | 6e3e590e2e10b3e0ec62a37c2a56f0704d202827 /drivers/net/hamradio | |
parent | ae71bafdd4ce29856addfede1ab7046f4e45775b (diff) |
net: fix network drivers ndo_start_xmit() return values (part 6)
Fix up hamradio drivers that return an errno value to dev_queue_xmit(), causing
it to print a warning an free the skb.
- bpqether: skb is freed: use after free
Compile tested only.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/hamradio')
-rw-r--r-- | drivers/net/hamradio/bpqether.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/hamradio/bpqether.c b/drivers/net/hamradio/bpqether.c index d509b371a56..5105548ad50 100644 --- a/drivers/net/hamradio/bpqether.c +++ b/drivers/net/hamradio/bpqether.c | |||
@@ -274,7 +274,7 @@ static int bpq_xmit(struct sk_buff *skb, struct net_device *dev) | |||
274 | if ((newskb = skb_realloc_headroom(skb, AX25_BPQ_HEADER_LEN)) == NULL) { | 274 | if ((newskb = skb_realloc_headroom(skb, AX25_BPQ_HEADER_LEN)) == NULL) { |
275 | printk(KERN_WARNING "bpqether: out of memory\n"); | 275 | printk(KERN_WARNING "bpqether: out of memory\n"); |
276 | kfree_skb(skb); | 276 | kfree_skb(skb); |
277 | return -ENOMEM; | 277 | return NETDEV_TX_OK; |
278 | } | 278 | } |
279 | 279 | ||
280 | if (skb->sk != NULL) | 280 | if (skb->sk != NULL) |
@@ -294,7 +294,7 @@ static int bpq_xmit(struct sk_buff *skb, struct net_device *dev) | |||
294 | if ((dev = bpq_get_ether_dev(dev)) == NULL) { | 294 | if ((dev = bpq_get_ether_dev(dev)) == NULL) { |
295 | dev->stats.tx_dropped++; | 295 | dev->stats.tx_dropped++; |
296 | kfree_skb(skb); | 296 | kfree_skb(skb); |
297 | return -ENODEV; | 297 | return NETDEV_TX_OK; |
298 | } | 298 | } |
299 | 299 | ||
300 | skb->protocol = ax25_type_trans(skb, dev); | 300 | skb->protocol = ax25_type_trans(skb, dev); |