aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/addrconf.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2013-07-03 17:50:41 -0400
committerDavid S. Miller <davem@davemloft.net>2013-07-03 17:55:13 -0400
commit0c1072ae0242fbdffd9a0bba36e7a7033d287f9c (patch)
treee0f4dbdbf5078d4a707911177e7bdc17a70bdce5 /net/ipv6/addrconf.c
parentc50cd357887acf9fd7af3a5d492911bd825555a2 (diff)
parent8bb495e3f02401ee6f76d1b1d77f3ac9f079e376 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/ethernet/freescale/fec_main.c drivers/net/ethernet/renesas/sh_eth.c net/ipv4/gre.c The GRE conflict is between a bug fix (kfree_skb --> kfree_skb_list) and the splitting of the gre.c code into seperate files. The FEC conflict was two sets of changes adding ethtool support code in an "!CONFIG_M5272" CPP protected block. Finally the sh_eth.c conflict was between one commit add bits set in the .eesr_err_check mask whilst another commit removed the .tx_error_check member and assignments. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/addrconf.c')
-rw-r--r--net/ipv6/addrconf.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index 75fd93bdd0d3..cfdcf7b2daf6 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -2656,6 +2656,9 @@ static void init_loopback(struct net_device *dev)
2656 if (sp_ifa->flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE)) 2656 if (sp_ifa->flags & (IFA_F_DADFAILED | IFA_F_TENTATIVE))
2657 continue; 2657 continue;
2658 2658
2659 if (sp_ifa->rt)
2660 continue;
2661
2659 sp_rt = addrconf_dst_alloc(idev, &sp_ifa->addr, 0); 2662 sp_rt = addrconf_dst_alloc(idev, &sp_ifa->addr, 0);
2660 2663
2661 /* Failure cases are ignored */ 2664 /* Failure cases are ignored */
@@ -4340,6 +4343,7 @@ static int inet6_set_iftoken(struct inet6_dev *idev, struct in6_addr *token)
4340 struct inet6_ifaddr *ifp; 4343 struct inet6_ifaddr *ifp;
4341 struct net_device *dev = idev->dev; 4344 struct net_device *dev = idev->dev;
4342 bool update_rs = false; 4345 bool update_rs = false;
4346 struct in6_addr ll_addr;
4343 4347
4344 if (token == NULL) 4348 if (token == NULL)
4345 return -EINVAL; 4349 return -EINVAL;
@@ -4359,11 +4363,9 @@ static int inet6_set_iftoken(struct inet6_dev *idev, struct in6_addr *token)
4359 4363
4360 write_unlock_bh(&idev->lock); 4364 write_unlock_bh(&idev->lock);
4361 4365
4362 if (!idev->dead && (idev->if_flags & IF_READY)) { 4366 if (!idev->dead && (idev->if_flags & IF_READY) &&
4363 struct in6_addr ll_addr; 4367 !ipv6_get_lladdr(dev, &ll_addr, IFA_F_TENTATIVE |
4364 4368 IFA_F_OPTIMISTIC)) {
4365 ipv6_get_lladdr(dev, &ll_addr, IFA_F_TENTATIVE |
4366 IFA_F_OPTIMISTIC);
4367 4369
4368 /* If we're not ready, then normal ifup will take care 4370 /* If we're not ready, then normal ifup will take care
4369 * of this. Otherwise, we need to request our rs here. 4371 * of this. Otherwise, we need to request our rs here.