All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cedric Le Goater <clg@fr.ibm.com>
To: Li Zefan <lizf@cn.fujitsu.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Linux Containers <containers@lists.linux-foundation.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/4] freezer_cg: remove redundant check in freezer_can_attach()
Date: Tue, 21 Oct 2008 11:47:40 +0200	[thread overview]
Message-ID: <48FDA53C.6030106@fr.ibm.com> (raw)
In-Reply-To: <48FDA0F3.2070306@cn.fujitsu.com>

Li Zefan wrote:
> Cedric Le Goater wrote:
>> Li Zefan wrote:
>>> It is sufficient to check if @task is frozen, and no need to check if
>>> the original freezer is frozen.
>> hmm, a task being frozen does not mean that its freezer cgroup is 
>> frozen.
> 
> If a task has being frozen, then can_attach() returns -EBUSY at once.
> If a task isn't frozen, then we have orig_freezer->state == THAWED.
> 
> So we need to check the state of the task only.
> 
>> So the extra check seems valid but looking at the comment :
>>
>> 	/*
>> 	 * The call to cgroup_lock() in the freezer.state write method prevents
>> 	 * a write to that file racing against an attach, and hence the
>> 	 * can_attach() result will remain valid until the attach completes.
>> 	 */
>> 	static int freezer_can_attach(struct cgroup_subsys *ss,
>>
>> how do we know that the task_freezer(task), which is not protected by
>> the cgroup_lock(), is not going to change its state to CGROUP_FROZEN 
>> it looks racy.
>>
> 
> Since freezer_can_attach() is called by cgroup core with cgroup_lock held, there is
> no race with task attaching and state changing.

ok I see. cgroup_mutex is global, I thought it had changed and that we 
were only locking the cgroup the task was being attached to. 

Acked-by: Cedric Le Goater <clg@fr.ibm.com>

thanks,

C. 

 

  parent reply	other threads:[~2008-10-21  9:47 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-21  0:48 [PATCH 1/4] freezer_cg: fix improper BUG_ON() causing oops Li Zefan
2008-10-21  0:50 ` [PATCH 2/4] freezer_cg: remove redundant check in freezer_can_attach() Li Zefan
     [not found]   ` <48FD273F.3040505-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2008-10-21  0:51     ` [PATCH 3/4] freezer_cg: use thaw_process() in unfreeze_cgroup() Li Zefan
2008-10-21  7:32     ` [PATCH 2/4] freezer_cg: remove redundant check in freezer_can_attach() Cedric Le Goater
2008-10-21 21:40     ` Matt Helsley
2008-10-21  0:51   ` [PATCH 3/4] freezer_cg: use thaw_process() in unfreeze_cgroup() Li Zefan
2008-10-21  0:52     ` [PATCH 4/4] freezer_cg: simplify freezer_change_state() Li Zefan
2008-10-21  9:53       ` Cedric Le Goater
     [not found]       ` <48FD27E1.5070903-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2008-10-21  9:53         ` Cedric Le Goater
2008-10-21 21:45         ` Matt Helsley
2008-10-21 21:45       ` Matt Helsley
2008-10-21  7:16     ` [PATCH 3/4] freezer_cg: use thaw_process() in unfreeze_cgroup() Cedric Le Goater
2008-10-21  8:40       ` Li Zefan
     [not found]       ` <48FD81B8.5030103-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-10-21  8:40         ` Li Zefan
2008-10-21 20:58         ` Andrew Morton
2008-10-21 20:58       ` Andrew Morton
     [not found]         ` <20081021135813.e77d3015.akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2008-10-22  7:37           ` Cedric Le Goater
2008-10-22  7:37         ` Cedric Le Goater
     [not found]     ` <48FD2784.30906-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2008-10-21  0:52       ` [PATCH 4/4] freezer_cg: simplify freezer_change_state() Li Zefan
2008-10-21  7:16       ` [PATCH 3/4] freezer_cg: use thaw_process() in unfreeze_cgroup() Cedric Le Goater
2008-10-21 21:44       ` Matt Helsley
2008-10-21 21:44     ` Matt Helsley
2008-10-21  7:32   ` [PATCH 2/4] freezer_cg: remove redundant check in freezer_can_attach() Cedric Le Goater
     [not found]     ` <48FD85A2.8090605-NmTC/0ZBporQT0dZR+AlfA@public.gmane.org>
2008-10-21  9:29       ` Li Zefan
2008-10-21  9:29     ` Li Zefan
     [not found]       ` <48FDA0F3.2070306-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2008-10-21  9:47         ` Cedric Le Goater
2008-10-21  9:47       ` Cedric Le Goater [this message]
2008-10-21 21:40   ` Matt Helsley
2008-10-21  7:16 ` [PATCH 1/4] freezer_cg: fix improper BUG_ON() causing oops Cedric Le Goater
2008-10-21 21:39 ` Matt Helsley
     [not found] ` <48FD26F5.1070809-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2008-10-21  0:50   ` [PATCH 2/4] freezer_cg: remove redundant check in freezer_can_attach() Li Zefan
2008-10-21  7:16   ` [PATCH 1/4] freezer_cg: fix improper BUG_ON() causing oops Cedric Le Goater
2008-10-21 21:39   ` Matt Helsley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48FDA53C.6030106@fr.ibm.com \
    --to=clg@fr.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=containers@lists.linux-foundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizf@cn.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.