diff options
author | David S. Miller <davem@davemloft.net> | 2015-10-20 09:08:27 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-20 09:08:27 -0400 |
commit | 26440c835f8b1a491e2704118ac55bf87334366c (patch) | |
tree | 3c2d23b59fd49b252fdbf6c09efc41b354933fc6 /net/ipv4 | |
parent | 371f1c7e0d854796adc622cc3bacfcc5fc638db1 (diff) | |
parent | 1099f86044111e9a7807f09523e42d4c9d0fb781 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/usb/asix_common.c
net/ipv4/inet_connection_sock.c
net/switchdev/switchdev.c
In the inet_connection_sock.c case the request socket hashing scheme
is completely different in net-next.
The other two conflicts were overlapping changes.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/arp.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index 01308e6e6127..59b3e0e8fd51 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c | |||
@@ -312,7 +312,7 @@ static void arp_send_dst(int type, int ptype, __be32 dest_ip, | |||
312 | if (!skb) | 312 | if (!skb) |
313 | return; | 313 | return; |
314 | 314 | ||
315 | skb_dst_set(skb, dst); | 315 | skb_dst_set(skb, dst_clone(dst)); |
316 | arp_xmit(skb); | 316 | arp_xmit(skb); |
317 | } | 317 | } |
318 | 318 | ||
@@ -384,7 +384,7 @@ static void arp_solicit(struct neighbour *neigh, struct sk_buff *skb) | |||
384 | } | 384 | } |
385 | 385 | ||
386 | if (skb && !(dev->priv_flags & IFF_XMIT_DST_RELEASE)) | 386 | if (skb && !(dev->priv_flags & IFF_XMIT_DST_RELEASE)) |
387 | dst = dst_clone(skb_dst(skb)); | 387 | dst = skb_dst(skb); |
388 | arp_send_dst(ARPOP_REQUEST, ETH_P_ARP, target, dev, saddr, | 388 | arp_send_dst(ARPOP_REQUEST, ETH_P_ARP, target, dev, saddr, |
389 | dst_hw, dev->dev_addr, NULL, dst); | 389 | dst_hw, dev->dev_addr, NULL, dst); |
390 | } | 390 | } |
@@ -816,7 +816,7 @@ static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb) | |||
816 | } else { | 816 | } else { |
817 | pneigh_enqueue(&arp_tbl, | 817 | pneigh_enqueue(&arp_tbl, |
818 | in_dev->arp_parms, skb); | 818 | in_dev->arp_parms, skb); |
819 | return 0; | 819 | goto out_free_dst; |
820 | } | 820 | } |
821 | goto out; | 821 | goto out; |
822 | } | 822 | } |
@@ -870,6 +870,8 @@ static int arp_process(struct net *net, struct sock *sk, struct sk_buff *skb) | |||
870 | 870 | ||
871 | out: | 871 | out: |
872 | consume_skb(skb); | 872 | consume_skb(skb); |
873 | out_free_dst: | ||
874 | dst_release(reply_dst); | ||
873 | return 0; | 875 | return 0; |
874 | } | 876 | } |
875 | 877 | ||