Skip to content

Commit d8e5929

Browse files
idoschpundiramit
authored andcommitted
UPSTREAM: ipv6: fib: Unlink replaced routes from their nodes
When a route is deleted its node pointer is set to NULL to indicate it's no longer linked to its node. Do the same for routes that are replaced. This will later allow us to test if a route is still in the FIB by checking its node pointer instead of its reference count. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net> Cherry-pick from: 7483cea79957312e9f8e9cf760a1bc5d6c507113 Bug: 64978549 Change-Id: Ibfa54cf918084138b6b19437e9ef86bfaea5deae
1 parent cc0b17f commit d8e5929

1 file changed

Lines changed: 2 additions & 0 deletions

File tree

net/ipv6/ip6_fib.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -909,6 +909,7 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt,
909909
fn->fn_flags |= RTN_RTINFO;
910910
}
911911
nsiblings = iter->rt6i_nsiblings;
912+
iter->rt6i_node = NULL;
912913
fib6_purge_rt(iter, fn, info->nl_net);
913914
if (fn->rr_ptr == iter)
914915
fn->rr_ptr = NULL;
@@ -923,6 +924,7 @@ static int fib6_add_rt2node(struct fib6_node *fn, struct rt6_info *rt,
923924
break;
924925
if (rt6_qualify_for_ecmp(iter)) {
925926
*ins = iter->dst.rt6_next;
927+
iter->rt6i_node = NULL;
926928
fib6_purge_rt(iter, fn, info->nl_net);
927929
if (fn->rr_ptr == iter)
928930
fn->rr_ptr = NULL;

0 commit comments

Comments
 (0)