diff --git a/[refs] b/[refs] index 3b24fd4a265b..cda6e5caf895 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7d743b7e952261f4d9ee091100b6403f3ce8a2af +refs/heads/master: 29ba5fed1bbd09c2cba890798c8f9eaab251401d diff --git a/trunk/net/ipv6/addrconf.c b/trunk/net/ipv6/addrconf.c index 93b7a933a775..848b35591042 100644 --- a/trunk/net/ipv6/addrconf.c +++ b/trunk/net/ipv6/addrconf.c @@ -2669,7 +2669,9 @@ static int addrconf_ifdown(struct net_device *dev, int how) ASSERT_RTNL(); - rt6_ifdown(net, dev); + /* Flush routes if device is being removed or it is not loopback */ + if (how || !(dev->flags & IFF_LOOPBACK)) + rt6_ifdown(net, dev); neigh_ifdown(&nd_tbl, dev); idev = __in6_dev_get(dev);