[PATCH] IPv6 anycast refcnt fix

2007-02-24 Thread Michal Wrobel
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 <[EMAIL PROTECTED]>

--- linux/net/ipv6/addrconf.c   2007-02-22 19:46:27.0 +0100
+++ linux/net/ipv6/addrconf.c   2007-02-25 00:22:37.0 +0100
@@ -456,6 +456,8 @@
ipv6_dev_mc_dec(dev, );
}
for (ifa=idev->addr_list; ifa; ifa=ifa->if_next) {
+   if (ifa->flags_F_TENTATIVE)
+   continue;
if (idev->cnf.forwarding)
addrconf_join_anycast(ifa);
else

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] IPv6 anycast refcnt fix

2007-02-24 Thread Michal Wrobel
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 [EMAIL PROTECTED]

--- linux/net/ipv6/addrconf.c   2007-02-22 19:46:27.0 +0100
+++ linux/net/ipv6/addrconf.c   2007-02-25 00:22:37.0 +0100
@@ -456,6 +456,8 @@
ipv6_dev_mc_dec(dev, addr);
}
for (ifa=idev-addr_list; ifa; ifa=ifa-if_next) {
+   if (ifa-flagsIFA_F_TENTATIVE)
+   continue;
if (idev-cnf.forwarding)
addrconf_join_anycast(ifa);
else

-
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/