From: Srivatsa Vaddagiri <vatsa@in.ibm.com>
To: Paul Jackson <pj@sgi.com>
Cc: sekharan@us.ibm.com, ckrm-tech@lists.sourceforge.net,
linux-kernel@vger.kernel.org, xemul@sw.ru, dev@sw.ru,
rohitseth@google.com, ebiederm@xmission.com, mbligh@google.com,
winget@google.com, containers@lists.osdl.org, serue@us.ibm.com,
menage@google.com, devel@openvz.org
Subject: Re: [ckrm-tech] [PATCH 1/7] containers (V7): Generic container system abstracted from cpusets code
Date: Sun, 25 Mar 2007 07:58:16 +0530 [thread overview]
Message-ID: <20070325022816.GE11794@in.ibm.com> (raw)
In-Reply-To: <20070324184128.e8b34a3e.pj@sgi.com>
On Sat, Mar 24, 2007 at 06:41:28PM -0700, Paul Jackson wrote:
> > the following code becomes racy with cpuset_exit() ...
> >
> > atomic_inc(&cs->count);
> > rcu_assign_pointer(tsk->cpuset, cs);
> > task_unlock(tsk);
>
> eh ... so ... ?
>
> I don't know of any sequence where that causes any problem.
>
> Do you see one?
Let's say we had two cpusets CS1 amd CS2 (both different from top_cpuset).
CS1 has just one task T1 in it (CS1->count = 0) while CS2 has no tasks
in it (CS2->count = 0).
Now consider:
--------------------------------------------------------------------
CPU0 (attach_task T1 to CS2) CPU1 (T1 is exiting)
--------------------------------------------------------------------
task_lock(T1);
oldcs = tsk->cpuset;
[oldcs = CS1]
T1->flags & PF_EXITING? (No)
T1->flags = PF_EXITING;
atomic_inc(&CS2->count);
cpuset_exit()
cs = tsk->cpuset; (cs = CS1)
T1->cpuset = CS2;
T1->cpuset = &top_cpuset;
task_unlock(T1);
CS2 has one bogus count now (with no tasks in it), which may prevent it from
being removed/freed forever.
Not just this, continuing further we have more trouble:
--------------------------------------------------------------------
CPU0 (attach_task T1 to CS2) CPU1 (T1 is exiting)
--------------------------------------------------------------------
synchronize_rcu()
atomic_dec(&CS1->count);
[CS1->count = 0]
if atomic_dec_and_test(&oldcs->count))
[CS1->count = -1]
We now have CS1->count negative. Is that good? I am uncomfortable ..
We need a task_lock() in cpuset_exit to avoid this race.
--
Regards,
vatsa
next prev parent reply other threads:[~2007-03-25 2:20 UTC|newest]
Thread overview: 132+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-12 8:15 [PATCH 0/7] containers (V7): Generic Process Containers menage
2007-02-12 8:15 ` [PATCH 1/7] containers (V7): Generic container system abstracted from cpusets code menage
2007-02-12 12:33 ` Srivatsa Vaddagiri
2007-02-12 19:26 ` Paul Menage
2007-02-12 19:46 ` Paul Menage
2007-02-13 5:48 ` Srivatsa Vaddagiri
2007-02-13 8:16 ` [ckrm-tech] " Srivatsa Vaddagiri
2007-03-07 12:21 ` Srivatsa Vaddagiri
2007-03-07 14:06 ` [ckrm-tech] " Srivatsa Vaddagiri
2007-03-07 20:50 ` Paul Menage
2007-03-08 10:38 ` [ckrm-tech] " Srivatsa Vaddagiri
2007-03-08 10:40 ` Paul Menage
2007-03-11 19:38 ` Paul Jackson
2007-03-12 14:19 ` Srivatsa Vaddagiri
2007-03-22 9:56 ` Srivatsa Vaddagiri
2007-03-22 10:20 ` Srivatsa Vaddagiri
2007-03-24 15:05 ` Srivatsa Vaddagiri
2007-03-24 19:25 ` Paul Jackson
2007-03-25 0:45 ` Srivatsa Vaddagiri
2007-03-25 1:41 ` Paul Jackson
2007-03-25 2:28 ` Srivatsa Vaddagiri [this message]
2007-03-25 4:16 ` Srivatsa Vaddagiri
2007-03-25 5:43 ` Paul Jackson
2007-03-25 8:21 ` Srivatsa Vaddagiri
2007-03-25 4:45 ` Paul Jackson
2007-03-25 5:05 ` Srivatsa Vaddagiri
2007-03-25 4:59 ` Paul Jackson
2007-02-12 8:15 ` [PATCH 2/7] containers (V7): Cpusets hooked into containers menage
2007-02-15 20:35 ` Serge E. Hallyn
2007-02-15 20:49 ` Paul Menage
2007-03-07 14:34 ` Srivatsa Vaddagiri
2007-03-07 16:01 ` Paul Menage
2007-03-07 16:31 ` [ckrm-tech] " Srivatsa Vaddagiri
2007-03-07 16:31 ` Paul Menage
2007-03-07 14:52 ` Srivatsa Vaddagiri
2007-03-07 16:12 ` Paul Menage
2007-02-12 8:15 ` [PATCH 4/7] containers (V7): Simple CPU accounting container subsystem menage
2007-02-12 8:15 ` [PATCH 5/7] containers (V7): Resource Groups over generic containers menage
2007-02-12 8:15 ` [PATCH 6/7] containers (V7): BeanCounters over generic process containers menage
2007-02-12 15:34 ` Srivatsa Vaddagiri
2007-02-12 18:49 ` Paul Menage
2007-02-13 8:52 ` Pavel Emelianov
2007-02-13 9:03 ` Paul Menage
2007-02-13 9:18 ` Pavel Emelianov
2007-02-13 9:37 ` Paul Menage
2007-02-13 9:49 ` Pavel Emelianov
2007-02-12 8:15 ` [PATCH 7/7] containers (V7): Container interface to nsproxy subsystem menage
2007-03-24 5:05 ` [ckrm-tech] " Srivatsa Vaddagiri
2007-03-24 16:23 ` Srivatsa Vaddagiri
2007-03-26 21:57 ` Serge E. Hallyn
2007-03-28 14:55 ` Srivatsa Vaddagiri
2007-03-28 15:26 ` Serge E. Hallyn
2007-03-26 21:55 ` Serge E. Hallyn
2007-03-31 2:47 ` Srivatsa Vaddagiri
2007-04-02 14:09 ` Serge E. Hallyn
2007-04-02 14:27 ` Srivatsa Vaddagiri
2007-04-02 18:02 ` Eric W. Biederman
2007-04-03 14:16 ` Srivatsa Vaddagiri
2007-04-03 15:32 ` Serge E. Hallyn
2007-04-03 15:45 ` Paul Menage
2007-04-03 15:54 ` Serge E. Hallyn
2007-04-03 16:16 ` Srivatsa Vaddagiri
2007-04-03 16:26 ` Kirill Korotaev
2007-04-03 16:46 ` Srivatsa Vaddagiri
2007-04-03 16:52 ` Paul Menage
2007-04-03 17:11 ` Srivatsa Vaddagiri
2007-04-03 17:10 ` Paul Menage
2007-04-03 17:30 ` Srivatsa Vaddagiri
2007-04-03 17:30 ` Paul Menage
2007-04-03 17:51 ` Srivatsa Vaddagiri
2007-04-03 17:49 ` Paul Menage
2007-04-04 3:07 ` Srivatsa Vaddagiri
2007-04-04 3:44 ` Paul Jackson
2007-04-04 4:04 ` Paul Menage
2007-04-04 5:15 ` Srivatsa Vaddagiri
2007-04-04 7:00 ` Paul Menage
2007-04-04 17:26 ` Srivatsa Vaddagiri
2007-04-04 17:42 ` Srivatsa Vaddagiri
2007-04-04 18:57 ` Paul Menage
2007-04-04 23:02 ` Eric W. Biederman
2007-04-05 1:35 ` Paul Menage
2007-04-05 1:37 ` Paul Menage
2007-04-05 16:57 ` Srivatsa Vaddagiri
2007-04-05 17:14 ` Srivatsa Vaddagiri
2007-04-06 21:54 ` Paul Menage
2007-04-05 2:57 ` Paul Menage
2007-04-05 6:39 ` Srivatsa Vaddagiri
2007-04-05 6:46 ` Srivatsa Vaddagiri
2007-04-05 6:48 ` Paul Menage
2007-04-05 8:49 ` Srivatsa Vaddagiri
2007-04-05 9:29 ` Paul Menage
2007-04-05 12:43 ` Srivatsa Vaddagiri
2007-04-05 14:13 ` Srivatsa Vaddagiri
2007-04-05 14:13 ` Paul Menage
2007-04-05 14:46 ` Srivatsa Vaddagiri
2007-04-03 17:34 ` Srivatsa Vaddagiri
2007-04-03 17:29 ` Paul Menage
2007-04-03 16:10 ` Srivatsa Vaddagiri
2007-04-03 15:41 ` Serge E. Hallyn
2007-02-12 9:18 ` [PATCH 0/7] containers (V7): Generic Process Containers Paul Jackson
2007-02-12 9:32 ` Paul Menage
2007-02-12 9:52 ` Paul Jackson
[not found] ` <20070212085104.485337000@menage.corp.google.com>
2007-02-12 15:27 ` [PATCH 3/7] containers (V7): Add generic multi-subsystem API to containers Srivatsa Vaddagiri
2007-02-12 18:40 ` Paul Menage
2007-02-13 13:19 ` Srivatsa Vaddagiri
2007-02-15 1:17 ` Paul Menage
2007-02-12 15:39 ` Serge E. Hallyn
2007-02-12 15:56 ` Cedric Le Goater
2007-02-12 18:31 ` Paul Menage
2007-02-14 8:49 ` Balbir Singh
2007-03-08 17:52 ` Srivatsa Vaddagiri
2007-03-24 12:51 ` [ckrm-tech] " Srivatsa Vaddagiri
2007-02-12 22:38 ` [PATCH 0/7] containers (V7): Generic Process Containers Sam Vilain
2007-02-12 22:47 ` Serge E. Hallyn
2007-02-12 23:18 ` Paul Menage
2007-02-12 23:15 ` Paul Menage
2007-02-13 0:30 ` Sam Vilain
2007-02-13 0:42 ` [ckrm-tech] " Paul Menage
2007-02-13 1:13 ` Sam Vilain
2007-02-13 1:47 ` Paul Menage
2007-02-20 17:34 ` Eric W. Biederman
2007-02-20 17:55 ` Paul Menage
2007-02-20 19:29 ` Eric W. Biederman
2007-02-20 22:47 ` Paul Menage
2007-02-20 23:08 ` Sam Vilain
2007-02-20 23:36 ` Paul Menage
2007-02-20 23:32 ` Serge E. Hallyn
2007-02-20 21:58 ` Sam Vilain
2007-02-20 22:19 ` Paul Menage
2007-02-20 22:58 ` Sam Vilain
2007-02-20 23:28 ` Paul Menage
2007-02-20 23:37 ` Serge E. Hallyn
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=20070325022816.GE11794@in.ibm.com \
--to=vatsa@in.ibm.com \
--cc=ckrm-tech@lists.sourceforge.net \
--cc=containers@lists.osdl.org \
--cc=dev@sw.ru \
--cc=devel@openvz.org \
--cc=ebiederm@xmission.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mbligh@google.com \
--cc=menage@google.com \
--cc=pj@sgi.com \
--cc=rohitseth@google.com \
--cc=sekharan@us.ibm.com \
--cc=serue@us.ibm.com \
--cc=winget@google.com \
--cc=xemul@sw.ru \
/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.