From 15e4bbcbdf6bf9f993503d5bcf0dacdf647aa36b Mon Sep 17 00:00:00 2001 From: stephen hemminger Date: Thu, 16 Dec 2010 11:28:12 +0000 Subject: [PATCH] --- yaml --- r: 223633 b: refs/heads/master c: 29ba5fed1bbd09c2cba890798c8f9eaab251401d h: refs/heads/master i: 223631: f81d59f973f23a8cf82ac161c883109ac66076ca v: v3 --- [refs] | 2 +- trunk/net/ipv6/addrconf.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) 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);