diff options
author | David S. Miller <davem@davemloft.net> | 2010-12-17 15:27:22 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-12-17 15:27:22 -0500 |
commit | b4aa9e05a61b845541fa6f5b1d246976922601f0 (patch) | |
tree | ca94478c3df281ab76a3399f5ba6341ade3f5791 /net/ipv6 | |
parent | 1dc0f3c54ce1df957f99c17b145488fd03eb1a59 (diff) | |
parent | 4b8fe66300acb2fba8b16d62606e0d30204022fc (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/bnx2x/bnx2x.h
drivers/net/wireless/iwlwifi/iwl-1000.c
drivers/net/wireless/iwlwifi/iwl-6000.c
drivers/net/wireless/iwlwifi/iwl-core.h
drivers/vhost/vhost.c
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/addrconf.c | 8 | ||||
-rw-r--r-- | net/ipv6/route.c | 7 | ||||
-rw-r--r-- | net/ipv6/udp.c | 1 | ||||
-rw-r--r-- | net/ipv6/udplite.c | 1 |
4 files changed, 13 insertions, 4 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 1023ad0d2b15..99d1888af363 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c | |||
@@ -2669,7 +2669,9 @@ static int addrconf_ifdown(struct net_device *dev, int how) | |||
2669 | 2669 | ||
2670 | ASSERT_RTNL(); | 2670 | ASSERT_RTNL(); |
2671 | 2671 | ||
2672 | rt6_ifdown(net, dev); | 2672 | /* Flush routes if device is being removed or it is not loopback */ |
2673 | if (how || !(dev->flags & IFF_LOOPBACK)) | ||
2674 | rt6_ifdown(net, dev); | ||
2673 | neigh_ifdown(&nd_tbl, dev); | 2675 | neigh_ifdown(&nd_tbl, dev); |
2674 | 2676 | ||
2675 | idev = __in6_dev_get(dev); | 2677 | idev = __in6_dev_get(dev); |
@@ -4057,11 +4059,11 @@ void inet6_ifinfo_notify(int event, struct inet6_dev *idev) | |||
4057 | kfree_skb(skb); | 4059 | kfree_skb(skb); |
4058 | goto errout; | 4060 | goto errout; |
4059 | } | 4061 | } |
4060 | rtnl_notify(skb, net, 0, RTNLGRP_IPV6_IFADDR, NULL, GFP_ATOMIC); | 4062 | rtnl_notify(skb, net, 0, RTNLGRP_IPV6_IFINFO, NULL, GFP_ATOMIC); |
4061 | return; | 4063 | return; |
4062 | errout: | 4064 | errout: |
4063 | if (err < 0) | 4065 | if (err < 0) |
4064 | rtnl_set_sk_err(net, RTNLGRP_IPV6_IFADDR, err); | 4066 | rtnl_set_sk_err(net, RTNLGRP_IPV6_IFINFO, err); |
4065 | } | 4067 | } |
4066 | 4068 | ||
4067 | static inline size_t inet6_prefix_nlmsg_size(void) | 4069 | static inline size_t inet6_prefix_nlmsg_size(void) |
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index e7efb269a6e9..d5c3b45d829e 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -1566,11 +1566,16 @@ static void rt6_do_pmtu_disc(struct in6_addr *daddr, struct in6_addr *saddr, | |||
1566 | { | 1566 | { |
1567 | struct rt6_info *rt, *nrt; | 1567 | struct rt6_info *rt, *nrt; |
1568 | int allfrag = 0; | 1568 | int allfrag = 0; |
1569 | 1569 | again: | |
1570 | rt = rt6_lookup(net, daddr, saddr, ifindex, 0); | 1570 | rt = rt6_lookup(net, daddr, saddr, ifindex, 0); |
1571 | if (rt == NULL) | 1571 | if (rt == NULL) |
1572 | return; | 1572 | return; |
1573 | 1573 | ||
1574 | if (rt6_check_expired(rt)) { | ||
1575 | ip6_del_rt(rt); | ||
1576 | goto again; | ||
1577 | } | ||
1578 | |||
1574 | if (pmtu >= dst_mtu(&rt->dst)) | 1579 | if (pmtu >= dst_mtu(&rt->dst)) |
1575 | goto out; | 1580 | goto out; |
1576 | 1581 | ||
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 26a8da3f2044..9a009c66c8a3 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c | |||
@@ -1477,6 +1477,7 @@ struct proto udpv6_prot = { | |||
1477 | .compat_setsockopt = compat_udpv6_setsockopt, | 1477 | .compat_setsockopt = compat_udpv6_setsockopt, |
1478 | .compat_getsockopt = compat_udpv6_getsockopt, | 1478 | .compat_getsockopt = compat_udpv6_getsockopt, |
1479 | #endif | 1479 | #endif |
1480 | .clear_sk = sk_prot_clear_portaddr_nulls, | ||
1480 | }; | 1481 | }; |
1481 | 1482 | ||
1482 | static struct inet_protosw udpv6_protosw = { | 1483 | static struct inet_protosw udpv6_protosw = { |
diff --git a/net/ipv6/udplite.c b/net/ipv6/udplite.c index 5f48fadc27f7..986c4de5292e 100644 --- a/net/ipv6/udplite.c +++ b/net/ipv6/udplite.c | |||
@@ -55,6 +55,7 @@ struct proto udplitev6_prot = { | |||
55 | .compat_setsockopt = compat_udpv6_setsockopt, | 55 | .compat_setsockopt = compat_udpv6_setsockopt, |
56 | .compat_getsockopt = compat_udpv6_getsockopt, | 56 | .compat_getsockopt = compat_udpv6_getsockopt, |
57 | #endif | 57 | #endif |
58 | .clear_sk = sk_prot_clear_portaddr_nulls, | ||
58 | }; | 59 | }; |
59 | 60 | ||
60 | static struct inet_protosw udplite6_protosw = { | 61 | static struct inet_protosw udplite6_protosw = { |