Messages in this thread Patch in this message | | | Date | Wed, 27 Apr 2011 16:12:38 -0700 | From | John Myers <> | Subject | [PATCH] ipv6: fix incorrect unregistration of sysctl when last ip deleted |
| |
When the last ip address is deleted, the kernel disables IPv6 on the interface. (Not sure why, but that's beside the point.) The call that does this is over-aggressive--it indicates the interface is about to be removed even though that isn't necessarily so.
This causes IPv6 to, among other things, unregister its sysctl parameters for the interface. Thus, the "accept_ra" and "addrconf" settings can't be set on the interface until after the interface has been brought back up, which is too late.
Signed-off-by: John Gardiner Myers <jgmyers@proofpoint.com> Cc: stable@kernel.org
---
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c index 1493534..042d0aa 100644 --- a/net/ipv6/addrconf.c +++ b/net/ipv6/addrconf.c @@ -2215,7 +2215,7 @@ static int inet6_addr_del(struct net *net, int ifindex, struct in6_addr *pfx, disable IPv6 on this interface. */ if (list_empty(&idev->addr_list)) - addrconf_ifdown(idev->dev, 1); + addrconf_ifdown(idev->dev, 0); return 0; } }
| |