lkml.org 
[lkml]   [2010]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 4/5] freezer cgroup: Fix an RCU warning in cgroup_freezing_or_frozen()
    On Thu, Apr 22, 2010 at 02:27:55PM +0200, Peter Zijlstra wrote:
    > On Thu, 2010-04-22 at 17:31 +0800, Li Zefan wrote:
    > > with CONFIG_PROVE_RCU, a warning can be triggered when we
    > > resume from suspend:
    > >
    > > ...
    > > include/linux/cgroup.h:533 invoked rcu_dereference_check() without protection!
    > > ...
    > >
    > > task_freezer() calls task_subsys_state(), which needs to be
    > > protected by rcu_read_lock or cgroup_mutex.
    > >
    > > Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
    > > ---
    > > kernel/cgroup_freezer.c | 2 ++
    > > 1 files changed, 2 insertions(+), 0 deletions(-)
    > >
    > > diff --git a/kernel/cgroup_freezer.c b/kernel/cgroup_freezer.c
    > > index 5038f4c..ac76983 100644
    > > --- a/kernel/cgroup_freezer.c
    > > +++ b/kernel/cgroup_freezer.c
    > > @@ -53,6 +53,7 @@ int cgroup_freezing_or_frozen(struct task_struct *task)
    > > struct freezer *freezer;
    > > enum freezer_state state;
    > >
    > > + rcu_read_lock();
    > > task_lock(task);
    > > freezer = task_freezer(task);
    > > if (!freezer->css.cgroup->parent)
    > > @@ -60,6 +61,7 @@ int cgroup_freezing_or_frozen(struct task_struct *task)
    > > else
    > > state = freezer->state;
    > > task_unlock(task);
    > > + rcu_read_unlock();
    > >
    > > return (state == CGROUP_FREEZING) || (state == CGROUP_FROZEN);
    > > }
    >
    > Hmm cgroup_attach_task() does hold task_lock() over setting
    > tsk->cgroups, so doesn't that also pin the task to the cgroup and thus
    > the cgroup itself?

    So you are advocating for the rcu_dereference check including the
    task lock, correct?

    Thanx, Paul


    \
     
     \ /
      Last update: 2010-04-22 22:39    [W:0.026 / U:1.144 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site