Hi Joe, On Thu, May 05, 2016 at 03:50:37PM -0700, Joe Stringer wrote: > diff --git a/net/netfilter/nf_conntrack_helper.c b/net/netfilter/nf_conntrack_helper.c > index 3b40ec575cd5..6860b19be406 100644 > --- a/net/netfilter/nf_conntrack_helper.c > +++ b/net/netfilter/nf_conntrack_helper.c > @@ -449,10 +449,10 @@ void nf_conntrack_helper_unregister(struct nf_conntrack_helper *me) > */ > synchronize_rcu(); > > - rtnl_lock(); > + mutex_lock(&net_mutex); > for_each_net(net) > __nf_conntrack_helper_unregister(me, net); > - rtnl_unlock(); > + mutex_unlock(&net_mutex); This simple solution works because we have no .exit callbacks in any of our helpers. Otherwise, the helper code may be already gone by when the worker has a chance to run to release the netns. If so, probably I can append this as comment to this function so we don't forget. If we ever have .exit callbacks (I don't expect so), we would need to wait for worker completion. -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html