From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tejun Heo Subject: Re: [PATCH v2 03/10] cgroup: net_cls: Protect access to task_cls_classid() when built as module Date: Fri, 24 Aug 2012 16:26:21 -0700 Message-ID: <20120824232621.GQ21325@google.com> References: <1345816904-21745-1-git-send-email-wagi@monom.org> <1345816904-21745-4-git-send-email-wagi@monom.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, Daniel Wagner , "David S. Miller" , Gao feng , Jamal Hadi Salim , John Fastabend , Li Zefan , Neil Horman To: Daniel Wagner Return-path: Content-Disposition: inline In-Reply-To: <1345816904-21745-4-git-send-email-wagi-kQCPcA+X3s7YtjvyW6yDsg@public.gmane.org> Sender: cgroups-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: netdev.vger.kernel.org On Fri, Aug 24, 2012 at 04:01:37PM +0200, Daniel Wagner wrote: > @@ -306,6 +312,11 @@ static void __exit exit_cgroup_cls(void) > synchronize_rcu(); > #endif > > +#if IS_MODULE(CONFIG_NET_CLS_CGROUP) > + static_key_slow_dec(&cgroup_cls_enabled); > + rcu_barrier(); Why is this rcu_barrier() necessary? In general, please explain what synchronization is going on when using sync constructs which aren't obvious - e.g. memory barriers, rcu barriers. Thanks. -- tejun