From: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: KAMEZAWA Hiroyuki
<kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
Cc: akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
fweisbec-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
rjw-KKrjLPT3xs0@public.gmane.org,
linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
paul-inf54ven1CmVyaH7bEyXVA@public.gmane.org
Subject: Re: [PATCH 04/10] cgroup: always lock threadgroup during migration
Date: Fri, 4 Nov 2011 08:21:50 -0700 [thread overview]
Message-ID: <20111104152150.GX4417@google.com> (raw)
In-Reply-To: <20111104175413.30afaf8e.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
Hello,
On Fri, Nov 04, 2011 at 05:54:13PM +0900, KAMEZAWA Hiroyuki wrote:
> > - /* if PF_EXITING is set, the tsk->cgroups pointer is no longer safe. */
> > + /* @tsk can't exit as its threadgroup is locked */
> > task_lock(tsk);
> > - if (tsk->flags & PF_EXITING) {
> > - task_unlock(tsk);
> > - put_css_set(newcg);
> > - return -ESRCH;
> > - }
> > + WARN_ON_ONCE(tsk->flags & PF_EXITING);
> > rcu_assign_pointer(tsk->cgroups, newcg);
> > task_unlock(tsk);
>
> Is this task_lock/unlock is required ?
For put, I don't think it's necessary.
> > @@ -2116,11 +2120,6 @@ int cgroup_attach_proc(struct cgroup *cgrp, struct task_struct *leader)
> > continue;
> > /* get old css_set pointer */
> > task_lock(tsk);
> > - if (tsk->flags & PF_EXITING) {
> > - /* ignore this task if it's going away */
> > - task_unlock(tsk);
> > - continue;
> > - }
> > oldcg = tsk->cgroups;
> > get_css_set(oldcg);
> > task_unlock(tsk);
For get, I think it is; otherwise, nothing prevents someone else from
changing tsk->cgroups between load and get, and destroying it.
Thanks.
--
tejun
WARNING: multiple messages have this Message-ID (diff)
From: Tejun Heo <tj@kernel.org>
To: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: paul@paulmenage.org, rjw@sisk.pl, lizf@cn.fujitsu.com,
linux-pm@lists.linux-foundation.org,
linux-kernel@vger.kernel.org,
containers@lists.linux-foundation.org, fweisbec@gmail.com,
matthltc@us.ibm.com, akpm@linux-foundation.org, oleg@redhat.com
Subject: Re: [PATCH 04/10] cgroup: always lock threadgroup during migration
Date: Fri, 4 Nov 2011 08:21:50 -0700 [thread overview]
Message-ID: <20111104152150.GX4417@google.com> (raw)
In-Reply-To: <20111104175413.30afaf8e.kamezawa.hiroyu@jp.fujitsu.com>
Hello,
On Fri, Nov 04, 2011 at 05:54:13PM +0900, KAMEZAWA Hiroyuki wrote:
> > - /* if PF_EXITING is set, the tsk->cgroups pointer is no longer safe. */
> > + /* @tsk can't exit as its threadgroup is locked */
> > task_lock(tsk);
> > - if (tsk->flags & PF_EXITING) {
> > - task_unlock(tsk);
> > - put_css_set(newcg);
> > - return -ESRCH;
> > - }
> > + WARN_ON_ONCE(tsk->flags & PF_EXITING);
> > rcu_assign_pointer(tsk->cgroups, newcg);
> > task_unlock(tsk);
>
> Is this task_lock/unlock is required ?
For put, I don't think it's necessary.
> > @@ -2116,11 +2120,6 @@ int cgroup_attach_proc(struct cgroup *cgrp, struct task_struct *leader)
> > continue;
> > /* get old css_set pointer */
> > task_lock(tsk);
> > - if (tsk->flags & PF_EXITING) {
> > - /* ignore this task if it's going away */
> > - task_unlock(tsk);
> > - continue;
> > - }
> > oldcg = tsk->cgroups;
> > get_css_set(oldcg);
> > task_unlock(tsk);
For get, I think it is; otherwise, nothing prevents someone else from
changing tsk->cgroups between load and get, and destroying it.
Thanks.
--
tejun
next prev parent reply other threads:[~2011-11-04 15:21 UTC|newest]
Thread overview: 167+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-01 23:46 [PATCHSET] cgroup: stable threadgroup during attach & subsys methods consolidation Tejun Heo
2011-11-01 23:46 ` Tejun Heo
2011-11-01 23:46 ` [PATCH 01/10] cgroup: add cgroup_root_mutex Tejun Heo
2011-11-01 23:46 ` Tejun Heo
2011-11-04 8:38 ` KAMEZAWA Hiroyuki
2011-11-04 8:38 ` KAMEZAWA Hiroyuki
[not found] ` <1320191193-8110-2-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-04 8:38 ` KAMEZAWA Hiroyuki
2011-11-01 23:46 ` [PATCH 02/10] threadgroup: rename signal->threadgroup_fork_lock to ->group_rwsem Tejun Heo
2011-11-01 23:46 ` [PATCH 03/10] threadgroup: extend threadgroup_lock() to cover exit and exec Tejun Heo
2011-11-04 8:45 ` KAMEZAWA Hiroyuki
2011-11-04 8:45 ` KAMEZAWA Hiroyuki
2011-11-13 16:44 ` Frederic Weisbecker
[not found] ` <1320191193-8110-4-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-04 8:45 ` KAMEZAWA Hiroyuki
2011-11-13 16:44 ` Frederic Weisbecker
2011-11-13 16:44 ` Frederic Weisbecker
2011-11-14 13:54 ` Frederic Weisbecker
2011-11-14 13:54 ` Frederic Weisbecker
2011-11-14 13:54 ` Frederic Weisbecker
2011-11-21 22:03 ` Tejun Heo
2011-11-21 22:03 ` Tejun Heo
[not found] ` <20111121220326.GM25776-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-11-23 14:34 ` Frederic Weisbecker
2011-11-23 14:34 ` Frederic Weisbecker
2011-11-23 14:34 ` Frederic Weisbecker
2011-11-21 22:03 ` Tejun Heo
2011-11-21 21:58 ` Tejun Heo
2011-11-21 21:58 ` Tejun Heo
2011-11-23 14:02 ` Frederic Weisbecker
[not found] ` <20111121215839.GL25776-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-11-23 14:02 ` Frederic Weisbecker
2011-11-23 14:02 ` Frederic Weisbecker
2011-11-24 21:22 ` Tejun Heo
2011-11-24 21:22 ` Tejun Heo
[not found] ` <20111123140139.GB10669-oHC15RC7JGTpAmv0O++HtFaTQe2KTcn/@public.gmane.org>
2011-11-24 21:22 ` Tejun Heo
2011-11-21 21:58 ` Tejun Heo
2011-11-13 18:20 ` Frederic Weisbecker
2011-11-24 22:50 ` [PATCH UPDATED " Tejun Heo
2011-11-13 18:20 ` [PATCH " Frederic Weisbecker
2011-11-13 18:20 ` Frederic Weisbecker
2011-11-24 22:50 ` [PATCH UPDATED " Tejun Heo
2011-11-24 22:50 ` Tejun Heo
[not found] ` <20111124225054.GA14828-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-11-25 4:02 ` Linus Torvalds
2011-11-25 14:01 ` Frederic Weisbecker
2011-11-25 4:02 ` Linus Torvalds
2011-11-25 4:02 ` Linus Torvalds
[not found] ` <CA+55aFxq1wztMzYhKaY5RHazLBDz4pSXUgiGzTj2wA6EJcDbAw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2011-11-27 19:21 ` Tejun Heo
2011-11-27 19:21 ` Tejun Heo
2011-11-27 21:25 ` Tejun Heo
[not found] ` <20111127192155.GB4266-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-11-27 21:25 ` Tejun Heo
2011-11-27 21:25 ` Tejun Heo
2011-12-01 19:29 ` Tejun Heo
2011-12-01 19:29 ` Tejun Heo
[not found] ` <20111127212558.GE4266-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-12-01 19:29 ` Tejun Heo
2011-11-27 19:21 ` Tejun Heo
2011-11-25 14:01 ` Frederic Weisbecker
2011-11-25 14:01 ` Frederic Weisbecker
2011-11-27 19:30 ` Tejun Heo
[not found] ` <20111125140136.GC23307-oHC15RC7JGTpAmv0O++HtFaTQe2KTcn/@public.gmane.org>
2011-11-27 19:30 ` Tejun Heo
2011-11-27 19:30 ` Tejun Heo
2011-12-02 16:28 ` Frederic Weisbecker
2011-12-02 16:28 ` Frederic Weisbecker
2011-12-05 18:43 ` Tejun Heo
[not found] ` <20111202162753.GA19752-oHC15RC7JGTpAmv0O++HtFaTQe2KTcn/@public.gmane.org>
2011-12-05 18:43 ` Tejun Heo
2011-12-05 18:43 ` Tejun Heo
[not found] ` <20111205184315.GJ627-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-12-07 15:30 ` Frederic Weisbecker
2011-12-07 15:30 ` Frederic Weisbecker
2011-12-07 15:30 ` Frederic Weisbecker
2011-12-07 18:22 ` Tejun Heo
2011-12-07 18:22 ` Tejun Heo
[not found] ` <20111207182214.GA7610-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-12-08 20:50 ` [PATCH UPDATED AGAIN " Tejun Heo
2011-12-08 20:50 ` Tejun Heo
2011-12-08 20:50 ` Tejun Heo
[not found] ` <20111208205055.GB12108-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-12-09 23:42 ` Frederic Weisbecker
2011-12-09 23:42 ` Frederic Weisbecker
2011-12-13 1:33 ` Tejun Heo
2011-12-13 2:17 ` Tejun Heo
[not found] ` <20111213013334.GC25802-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-12-13 2:17 ` Tejun Heo
2011-12-13 2:17 ` Tejun Heo
2011-12-13 1:33 ` Tejun Heo
2011-12-13 1:33 ` Tejun Heo
2011-12-09 23:42 ` Frederic Weisbecker
[not found] ` <20111207153046.GC13252-oHC15RC7JGTpAmv0O++HtFaTQe2KTcn/@public.gmane.org>
2011-12-07 18:22 ` [PATCH UPDATED " Tejun Heo
[not found] ` <20111127193001.GC4266-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-12-02 16:28 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH " Tejun Heo
2011-11-01 23:46 ` [PATCH 04/10] cgroup: always lock threadgroup during migration Tejun Heo
2011-11-01 23:46 ` Tejun Heo
[not found] ` <1320191193-8110-5-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-04 8:54 ` KAMEZAWA Hiroyuki
2011-11-14 18:46 ` Frederic Weisbecker
2011-11-14 18:46 ` Frederic Weisbecker
2011-11-14 18:52 ` Frederic Weisbecker
2011-11-14 18:52 ` Frederic Weisbecker
2011-11-14 18:52 ` Frederic Weisbecker
2011-11-21 22:05 ` Tejun Heo
2011-11-21 22:05 ` Tejun Heo
2011-11-21 22:05 ` Tejun Heo
2011-11-04 8:54 ` KAMEZAWA Hiroyuki
[not found] ` <20111104175413.30afaf8e.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2011-11-04 15:21 ` Tejun Heo [this message]
2011-11-04 15:21 ` Tejun Heo
2011-11-04 15:21 ` Tejun Heo
2011-11-04 8:54 ` KAMEZAWA Hiroyuki
2011-11-14 18:46 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH 05/10] cgroup: subsys->attach_task() should be called after migration Tejun Heo
2011-11-01 23:46 ` Tejun Heo
2011-11-14 20:06 ` Frederic Weisbecker
2011-11-14 20:06 ` Frederic Weisbecker
2011-11-21 22:04 ` Tejun Heo
2011-11-21 22:04 ` Tejun Heo
2011-11-21 22:04 ` Tejun Heo
[not found] ` <1320191193-8110-6-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-14 20:06 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH 06/10] cgroup: improve old cgroup handling in cgroup_attach_proc() Tejun Heo
2011-11-01 23:46 ` [PATCH 07/10] cgroup: introduce cgroup_taskset and use it in subsys->can_attach(), cancel_attach() and attach() Tejun Heo
2011-11-01 23:46 ` [PATCH 08/10] cgroup: don't use subsys->can_attach_task() or ->attach_task() Tejun Heo
2011-11-01 23:46 ` Tejun Heo
2011-11-04 9:08 ` KAMEZAWA Hiroyuki
2011-11-04 9:08 ` KAMEZAWA Hiroyuki
[not found] ` <1320191193-8110-9-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-04 9:08 ` KAMEZAWA Hiroyuki
2011-11-14 23:54 ` Frederic Weisbecker
2011-11-14 23:54 ` Frederic Weisbecker
2011-11-14 23:54 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH 09/10] cgroup, cpuset: don't use ss->pre_attach() Tejun Heo
2011-11-01 23:46 ` [PATCH 10/10] cgroup: kill subsys->can_attach_task(), pre_attach() and attach_task() Tejun Heo
2011-11-21 22:07 ` [PATCHSET] cgroup: stable threadgroup during attach & subsys methods consolidation Tejun Heo
[not found] ` <1320191193-8110-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-01 23:46 ` [PATCH 01/10] cgroup: add cgroup_root_mutex Tejun Heo
2011-11-01 23:46 ` [PATCH 02/10] threadgroup: rename signal->threadgroup_fork_lock to ->group_rwsem Tejun Heo
2011-11-01 23:46 ` Tejun Heo
2011-11-04 8:40 ` KAMEZAWA Hiroyuki
2011-11-04 8:40 ` KAMEZAWA Hiroyuki
[not found] ` <20111104174032.e0c4fc11.kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org>
2011-11-04 15:16 ` Tejun Heo
2011-11-04 15:16 ` Tejun Heo
2011-11-04 15:16 ` Tejun Heo
[not found] ` <1320191193-8110-3-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-04 8:40 ` KAMEZAWA Hiroyuki
2011-11-01 23:46 ` [PATCH 03/10] threadgroup: extend threadgroup_lock() to cover exit and exec Tejun Heo
2011-11-01 23:46 ` [PATCH 04/10] cgroup: always lock threadgroup during migration Tejun Heo
2011-11-01 23:46 ` [PATCH 05/10] cgroup: subsys->attach_task() should be called after migration Tejun Heo
2011-11-01 23:46 ` [PATCH 06/10] cgroup: improve old cgroup handling in cgroup_attach_proc() Tejun Heo
2011-11-01 23:46 ` Tejun Heo
[not found] ` <1320191193-8110-7-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-14 20:37 ` Frederic Weisbecker
2011-11-14 20:37 ` Frederic Weisbecker
2011-11-14 20:37 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH 07/10] cgroup: introduce cgroup_taskset and use it in subsys->can_attach(), cancel_attach() and attach() Tejun Heo
2011-11-01 23:46 ` Tejun Heo
2011-11-14 21:16 ` Frederic Weisbecker
[not found] ` <1320191193-8110-8-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-14 21:16 ` Frederic Weisbecker
2011-11-14 21:16 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH 08/10] cgroup: don't use subsys->can_attach_task() or ->attach_task() Tejun Heo
2011-11-01 23:46 ` [PATCH 09/10] cgroup, cpuset: don't use ss->pre_attach() Tejun Heo
2011-11-01 23:46 ` Tejun Heo
[not found] ` <1320191193-8110-10-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-15 0:51 ` Frederic Weisbecker
2011-11-15 0:51 ` Frederic Weisbecker
2011-11-15 0:51 ` Frederic Weisbecker
2011-11-01 23:46 ` [PATCH 10/10] cgroup: kill subsys->can_attach_task(), pre_attach() and attach_task() Tejun Heo
2011-11-01 23:46 ` Tejun Heo
2011-11-04 9:10 ` KAMEZAWA Hiroyuki
2011-11-04 9:10 ` KAMEZAWA Hiroyuki
2011-11-15 0:54 ` Frederic Weisbecker
[not found] ` <1320191193-8110-11-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2011-11-04 9:10 ` KAMEZAWA Hiroyuki
2011-11-15 0:54 ` Frederic Weisbecker
2011-11-15 0:54 ` Frederic Weisbecker
2011-11-21 22:07 ` [PATCHSET] cgroup: stable threadgroup during attach & subsys methods consolidation Tejun Heo
2011-11-21 22:07 ` Tejun Heo
2011-11-22 2:27 ` Li Zefan
[not found] ` <20111121220719.GP25776-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2011-11-22 2:27 ` Li Zefan
2011-11-22 2:27 ` Li Zefan
2011-11-22 16:20 ` Tejun Heo
[not found] ` <4ECB089C.3080208-BthXqXjhjHXQFUHtdCDX3A@public.gmane.org>
2011-11-22 16:20 ` Tejun Heo
2011-11-22 16:20 ` Tejun Heo
2011-11-24 22:51 ` Tejun Heo
2011-11-24 22:51 ` Tejun Heo
2011-11-24 22:51 ` Tejun Heo
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=20111104152150.GX4417@google.com \
--to=tj-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=fweisbec-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=kamezawa.hiroyu-+CUm20s59erQFUHtdCDX3A@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-pm-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=paul-inf54ven1CmVyaH7bEyXVA@public.gmane.org \
--cc=rjw-KKrjLPT3xs0@public.gmane.org \
/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.