We do not need to clear f6i->rt6i_exception_bucket right before
freeing f6i.

Note that f6i->rt6i_exception_bucket is properly protected by
f6i->exception_bucket_flushed being set to one in rt6_flush_exceptions()
under the protection of rt6_exception_lock.

Signed-off-by: Eric Dumazet <[email protected]>
Cc: Wei Wang <[email protected]>
---
 net/ipv6/ip6_fib.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index 
b47e15df9769ccb2919e6ec0de5edd93f2ae518f..55193859152969794dab3df02637217a7f21016f
 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -175,10 +175,7 @@ void fib6_info_destroy_rcu(struct rcu_head *head)
        WARN_ON(f6i->fib6_node);
 
        bucket = rcu_dereference_protected(f6i->rt6i_exception_bucket, 1);
-       if (bucket) {
-               f6i->rt6i_exception_bucket = NULL;
-               kfree(bucket);
-       }
+       kfree(bucket);
 
        if (f6i->rt6i_pcpu) {
                int cpu;
-- 
2.21.0.593.g511ec345e18-goog

Reply via email to