From: Michal Wrobel Date: Thu, 8 Mar 2007 07:38:52 +0000 (+0100) Subject: [IPV6]: anycast refcnt fix X-Git-Tag: v2.6.16.44-rc1~14 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6ba50d10b7b7d8d0b6ef7150b705897dbfd05507;p=thirdparty%2Fkernel%2Fstable.git [IPV6]: anycast refcnt fix This patch fixes a bug in Linux IPv6 stack which caused anycast address to be added to a device prior DAD has been completed. This led to incorrect reference count which resulted in infinite wait for unregister_netdevice completion on interface removal. Signed-off-by: Michal Wrobel Signed-off-by: David S. Miller Signed-off-by: Adrian Bunk --- diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index e8f144171880d..e9e9894d2cab7 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -449,6 +449,8 @@ static void dev_forward_change(struct inet6_dev *idev) ipv6_dev_mc_dec(dev, &addr); } for (ifa=idev->addr_list; ifa; ifa=ifa->if_next) { + if (ifa->flags&IFA_F_TENTATIVE) + continue; if (idev->cnf.forwarding) addrconf_join_anycast(ifa); else