From a146a641108d026d5e447028e958b5e2c5bfae12 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Fri, 18 Apr 2008 01:46:19 -0700 Subject: [PATCH] --- yaml --- r: 90898 b: refs/heads/master c: 3c051235a7f115c34e675c9cf55820bd3435f860 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/ipv6/ip6_fib.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index c9836fcc2416..5ca84e4a1297 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1e42198609d73ed1a9adcba2af275c24c2678420 +refs/heads/master: 3c051235a7f115c34e675c9cf55820bd3435f860 diff --git a/trunk/net/ipv6/ip6_fib.c b/trunk/net/ipv6/ip6_fib.c index b3f6e03c454c..50f3f8f8a59b 100644 --- a/trunk/net/ipv6/ip6_fib.c +++ b/trunk/net/ipv6/ip6_fib.c @@ -772,6 +772,10 @@ int fib6_add(struct fib6_node *root, struct rt6_info *rt, struct nl_info *info) * If fib6_add_1 has cleared the old leaf pointer in the * super-tree leaf node we have to find a new one for it. */ + if (pn != fn && pn->leaf == rt) { + pn->leaf = NULL; + atomic_dec(&rt->rt6i_ref); + } if (pn != fn && !pn->leaf && !(pn->fn_flags & RTN_RTINFO)) { pn->leaf = fib6_find_prefix(info->nl_net, pn); #if RT6_DEBUG >= 2