diff options
-rw-r--r-- | include/linux/netdevice.h | 5 | ||||
-rw-r--r-- | net/ipv6/route.c | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index ab7ca3fdc495..846193dfb0ac 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -4262,6 +4262,11 @@ static inline const char *netdev_name(const struct net_device *dev) | |||
4262 | return dev->name; | 4262 | return dev->name; |
4263 | } | 4263 | } |
4264 | 4264 | ||
4265 | static inline bool netdev_unregistering(const struct net_device *dev) | ||
4266 | { | ||
4267 | return dev->reg_state == NETREG_UNREGISTERING; | ||
4268 | } | ||
4269 | |||
4265 | static inline const char *netdev_reg_state(const struct net_device *dev) | 4270 | static inline const char *netdev_reg_state(const struct net_device *dev) |
4266 | { | 4271 | { |
4267 | switch (dev->reg_state) { | 4272 | switch (dev->reg_state) { |
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index dc61b0b5e64e..7cebd954d5bb 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
@@ -2804,6 +2804,7 @@ static int fib6_ifdown(struct rt6_info *rt, void *arg) | |||
2804 | if ((rt->dst.dev == dev || !dev) && | 2804 | if ((rt->dst.dev == dev || !dev) && |
2805 | rt != adn->net->ipv6.ip6_null_entry && | 2805 | rt != adn->net->ipv6.ip6_null_entry && |
2806 | (rt->rt6i_nsiblings == 0 || | 2806 | (rt->rt6i_nsiblings == 0 || |
2807 | (dev && netdev_unregistering(dev)) || | ||
2807 | !rt->rt6i_idev->cnf.ignore_routes_with_linkdown)) | 2808 | !rt->rt6i_idev->cnf.ignore_routes_with_linkdown)) |
2808 | return -1; | 2809 | return -1; |
2809 | 2810 | ||