diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index a91d2b58aadd..9166f467293e 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -536,8 +536,12 @@ void net_passive_dec(struct net *net) if (refcount_dec_and_test(&net->passive)) { kfree(rcu_access_pointer(net->gen)); +#ifdef CONFIG_REF_TRACKER /* There should not be any trackers left there. */ ref_tracker_dir_exit(&net->notrefcnt_tracker); + if (!net->refcnt_tracker.dead) + ref_tracker_dir_exit(&net->refcnt_tracker); +#endif /* Wait for an extra rcu_barrier() before final free. */ llist_add(&net->defer_free_list, &defer_free_list);