diff options
Diffstat (limited to 'net/ipv6/ip6_fib.c')
-rw-r--r-- | net/ipv6/ip6_fib.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index b3f6e03c454c..50f3f8f8a59b 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c | |||
@@ -772,6 +772,10 @@ out: | |||
772 | * If fib6_add_1 has cleared the old leaf pointer in the | 772 | * If fib6_add_1 has cleared the old leaf pointer in the |
773 | * super-tree leaf node we have to find a new one for it. | 773 | * super-tree leaf node we have to find a new one for it. |
774 | */ | 774 | */ |
775 | if (pn != fn && pn->leaf == rt) { | ||
776 | pn->leaf = NULL; | ||
777 | atomic_dec(&rt->rt6i_ref); | ||
778 | } | ||
775 | if (pn != fn && !pn->leaf && !(pn->fn_flags & RTN_RTINFO)) { | 779 | if (pn != fn && !pn->leaf && !(pn->fn_flags & RTN_RTINFO)) { |
776 | pn->leaf = fib6_find_prefix(info->nl_net, pn); | 780 | pn->leaf = fib6_find_prefix(info->nl_net, pn); |
777 | #if RT6_DEBUG >= 2 | 781 | #if RT6_DEBUG >= 2 |