--- x/include/net/net_namespace.h +++ y/include/net/net_namespace.h @@ -328,6 +328,8 @@ static inline void __netns_tracker_alloc gfp_t gfp) { #ifdef CONFIG_NET_NS_REFCNT_TRACKER + if (!refcounted) + get_net(net); ref_tracker_alloc(refcounted ? &net->refcnt_tracker : &net->notrefcnt_tracker, tracker, gfp); @@ -345,8 +347,10 @@ static inline void __netns_tracker_free( bool refcounted) { #ifdef CONFIG_NET_NS_REFCNT_TRACKER - ref_tracker_free(refcounted ? &net->refcnt_tracker : + ref_tracker_free(refcounted ? &net->refcnt_tracker : &net->notrefcnt_tracker, tracker); + if (!refcounted) + put_net(net); #endif }