diff options
author | stephen hemminger <stephen@networkplumber.org> | 2013-06-17 15:09:59 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-06-17 18:55:47 -0400 |
commit | 7aa27238417a34ec9be2d8eff05ceff319f2d39b (patch) | |
tree | 27523a1ad89ecad7ac4e12627bd6cb43838144d6 | |
parent | 26a41ae604381c5cc0caf1c3261ca6b298b5fe69 (diff) |
vxlan: handle skb_clone failure
If skb_clone fails if out of memory then just skip the fanout.
Problem was introduced in 3.10 with:
commit 6681712d67eef14c4ce793561c3231659153a320
Author: David Stevens <dlstevens@us.ibm.com>
Date: Fri Mar 15 04:35:51 2013 +0000
vxlan: generalize forwarding tables
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/vxlan.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 15a73ec42c64..dda997a0102c 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c | |||
@@ -1161,9 +1161,11 @@ static netdev_tx_t vxlan_xmit(struct sk_buff *skb, struct net_device *dev) | |||
1161 | struct sk_buff *skb1; | 1161 | struct sk_buff *skb1; |
1162 | 1162 | ||
1163 | skb1 = skb_clone(skb, GFP_ATOMIC); | 1163 | skb1 = skb_clone(skb, GFP_ATOMIC); |
1164 | rc1 = vxlan_xmit_one(skb1, dev, rdst, did_rsc); | 1164 | if (skb1) { |
1165 | if (rc == NETDEV_TX_OK) | 1165 | rc1 = vxlan_xmit_one(skb1, dev, rdst, did_rsc); |
1166 | rc = rc1; | 1166 | if (rc == NETDEV_TX_OK) |
1167 | rc = rc1; | ||
1168 | } | ||
1167 | } | 1169 | } |
1168 | 1170 | ||
1169 | rc1 = vxlan_xmit_one(skb, dev, rdst0, did_rsc); | 1171 | rc1 = vxlan_xmit_one(skb, dev, rdst0, did_rsc); |