diff options
author | David S. Miller <davem@davemloft.net> | 2015-12-17 22:08:28 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-12-17 22:08:28 -0500 |
commit | b3e0d3d7bab14f2544a3314bec53a23dc7dd2206 (patch) | |
tree | 2bd3c1c1d128e0c362655fa70a6eea02fc856f62 /net/ipv6 | |
parent | 3268e5cb494d8778a5a67a9fa2b1bdb0243b77ad (diff) | |
parent | 73796d8bf27372e26c2b79881947304c14c2d353 (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/geneve.c
Here we had an overlapping change, where in 'net' the extraneous stats
bump was being removed whilst in 'net-next' the final argument to
udp_tunnel6_xmit_skb() was being changed.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/addrconf.c | 8 | ||||
-rw-r--r-- | net/ipv6/af_inet6.c | 3 | ||||
-rw-r--r-- | net/ipv6/ip6_gre.c | 8 | ||||
-rw-r--r-- | net/ipv6/netfilter/Kconfig | 1 | ||||
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 3 |
5 files changed, 15 insertions, 8 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 7082fb79d876..233efa67dc3d 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -350,6 +350,12 @@ static struct inet6_dev *ipv6_add_dev(struct net_device *dev) | |||
350 | setup_timer(&ndev->rs_timer, addrconf_rs_timer, | 350 | setup_timer(&ndev->rs_timer, addrconf_rs_timer, |
351 | (unsigned long)ndev); | 351 | (unsigned long)ndev); |
352 | memcpy(&ndev->cnf, dev_net(dev)->ipv6.devconf_dflt, sizeof(ndev->cnf)); | 352 | memcpy(&ndev->cnf, dev_net(dev)->ipv6.devconf_dflt, sizeof(ndev->cnf)); |
353 | |||
354 | if (ndev->cnf.stable_secret.initialized) | ||
355 | ndev->addr_gen_mode = IN6_ADDR_GEN_MODE_STABLE_PRIVACY; | ||
356 | else | ||
357 | ndev->addr_gen_mode = IN6_ADDR_GEN_MODE_EUI64; | ||
358 | |||
353 | ndev->cnf.mtu6 = dev->mtu; | 359 | ndev->cnf.mtu6 = dev->mtu; |
354 | ndev->cnf.sysctl = NULL; | 360 | ndev->cnf.sysctl = NULL; |
355 | ndev->nd_parms = neigh_parms_alloc(dev, &nd_tbl); | 361 | ndev->nd_parms = neigh_parms_alloc(dev, &nd_tbl); |
@@ -2454,7 +2460,7 @@ ok: | |||
2454 | #ifdef CONFIG_IPV6_OPTIMISTIC_DAD | 2460 | #ifdef CONFIG_IPV6_OPTIMISTIC_DAD |
2455 | if (in6_dev->cnf.optimistic_dad && | 2461 | if (in6_dev->cnf.optimistic_dad && |
2456 | !net->ipv6.devconf_all->forwarding && sllao) | 2462 | !net->ipv6.devconf_all->forwarding && sllao) |
2457 | addr_flags = IFA_F_OPTIMISTIC; | 2463 | addr_flags |= IFA_F_OPTIMISTIC; |
2458 | #endif | 2464 | #endif |
2459 | 2465 | ||
2460 | /* Do not allow to create too much of autoconfigured | 2466 | /* Do not allow to create too much of autoconfigured |
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 8ec0df75f1c4..9f5137cd604e 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -109,6 +109,9 @@ static int inet6_create(struct net *net, struct socket *sock, int protocol, | |||
109 | int try_loading_module = 0; | 109 | int try_loading_module = 0; |
110 | int err; | 110 | int err; |
111 | 111 | ||
112 | if (protocol < 0 || protocol >= IPPROTO_MAX) | ||
113 | return -EINVAL; | ||
114 | |||
112 | /* Look for the requested type/protocol pair. */ | 115 | /* Look for the requested type/protocol pair. */ |
113 | lookup_protocol: | 116 | lookup_protocol: |
114 | err = -ESOCKTNOSUPPORT; | 117 | err = -ESOCKTNOSUPPORT; |
diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c index 938d03ce5e4b..f37f18b6b40c 100644 --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c | |||
@@ -1570,13 +1570,11 @@ static int ip6gre_changelink(struct net_device *dev, struct nlattr *tb[], | |||
1570 | return -EEXIST; | 1570 | return -EEXIST; |
1571 | } else { | 1571 | } else { |
1572 | t = nt; | 1572 | t = nt; |
1573 | |||
1574 | ip6gre_tunnel_unlink(ign, t); | ||
1575 | ip6gre_tnl_change(t, &p, !tb[IFLA_MTU]); | ||
1576 | ip6gre_tunnel_link(ign, t); | ||
1577 | netdev_state_change(dev); | ||
1578 | } | 1573 | } |
1579 | 1574 | ||
1575 | ip6gre_tunnel_unlink(ign, t); | ||
1576 | ip6gre_tnl_change(t, &p, !tb[IFLA_MTU]); | ||
1577 | ip6gre_tunnel_link(ign, t); | ||
1580 | return 0; | 1578 | return 0; |
1581 | } | 1579 | } |
1582 | 1580 | ||
diff --git a/net/ipv6/netfilter/Kconfig b/net/ipv6/netfilter/Kconfig index f6a024e141e5..e10a04c9cdc7 100644 --- a/net/ipv6/netfilter/Kconfig +++ b/net/ipv6/netfilter/Kconfig | |||
@@ -49,6 +49,7 @@ config NFT_REJECT_IPV6 | |||
49 | 49 | ||
50 | config NFT_DUP_IPV6 | 50 | config NFT_DUP_IPV6 |
51 | tristate "IPv6 nf_tables packet duplication support" | 51 | tristate "IPv6 nf_tables packet duplication support" |
52 | depends on !NF_CONNTRACK || NF_CONNTRACK | ||
52 | select NF_DUP_IPV6 | 53 | select NF_DUP_IPV6 |
53 | help | 54 | help |
54 | This module enables IPv6 packet duplication support for nf_tables. | 55 | This module enables IPv6 packet duplication support for nf_tables. |
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 5382c2662fa2..f03d2b0445fd 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c | |||
@@ -93,10 +93,9 @@ static void inet6_sk_rx_dst_set(struct sock *sk, const struct sk_buff *skb) | |||
93 | { | 93 | { |
94 | struct dst_entry *dst = skb_dst(skb); | 94 | struct dst_entry *dst = skb_dst(skb); |
95 | 95 | ||
96 | if (dst) { | 96 | if (dst && dst_hold_safe(dst)) { |
97 | const struct rt6_info *rt = (const struct rt6_info *)dst; | 97 | const struct rt6_info *rt = (const struct rt6_info *)dst; |
98 | 98 | ||
99 | dst_hold(dst); | ||
100 | sk->sk_rx_dst = dst; | 99 | sk->sk_rx_dst = dst; |
101 | inet_sk(sk)->rx_dst_ifindex = skb->skb_iif; | 100 | inet_sk(sk)->rx_dst_ifindex = skb->skb_iif; |
102 | inet6_sk(sk)->rx_dst_cookie = rt6_get_cookie(rt); | 101 | inet6_sk(sk)->rx_dst_cookie = rt6_get_cookie(rt); |