From mboxrd@z Thu Jan 1 00:00:00 1970 From: Li Zefan Subject: Re: [PATCH 3/4] cgroup: fix locking in cgroup_cfts_commit() Date: Wed, 29 Jan 2014 11:37:36 +0800 Message-ID: <52E87780.1040002@huawei.com> References: <1390923125-4369-1-git-send-email-tj@kernel.org> <1390923125-4369-4-git-send-email-tj@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <1390923125-4369-4-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: containers-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: Tejun Heo Cc: cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org On 2014/1/28 23:32, Tejun Heo wrote: > cgroup_cfts_commit() walks the cgroup hierarchy that the target > subsystem is attached to and tries to apply the file changes. Due to > the convolution with inode locking, it can't keep cgroup_mutex locked > while iterating. It currently holds only RCU read lock around the > actual iteration and then pins the found cgroup using dget(). > > Unfortunately, this is incorrect. Although the iteration does check > cgroup_is_dead() before invoking dget(), there's nothing which > prevents the dentry from going away inbetween. Note that this is > different from the usual css iterations where css_tryget() is used to > pin the css - css_tryget() tests whether the css can be pinned and > fails if not. > > The problem can be solved by simply holding cgroup_mutex instead of > RCU read lock around the iteration, which actually reduces LOC. > > Signed-off-by: Tejun Heo > Cc: stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Good catch! Acked-by: Li Zefan