From: Oleg Nesterov <oleg-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> To: Tejun Heo <tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> Cc: containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, rjw-KKrjLPT3xs0@public.gmane.org, cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Subject: Re: [PATCH 1/7] cgroup: cgroup_subsys->fork() should be called after the task is added to css_set Date: Mon, 22 Oct 2012 20:04:45 +0200 [thread overview] Message-ID: <20121022180445.GB21553@redhat.com> (raw) In-Reply-To: <20121021192222.GB5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org> Hi Tejun, On 10/21, Tejun Heo wrote: > > On Sun, Oct 21, 2012 at 09:11:41PM +0200, Oleg Nesterov wrote: > > > And it seems that fork() can race with cgroup iterator. post_fork > > will notice use_task_css_set_links, but until then the child belongs > > to the parent's css and it is not "visible" to iterator (and right > > after cgroup_fork() it is not visible to do_each_thread() if > > use_task_css_set_links is not set). > > > > For example. Suppose that the child migrates to another cgroup after > > copy_process() makes it visible to the user-space. Then update_if_frozen > > sets CGROUP_FROZEN (again, cgroup_iter_next do not see this child). > > > > Now, post_fork calls freezer_fork() and hits BUG_ON(CGROUP_FROZEN). > > > > But again, I do not blame this patch. > > I'm planning to update it to, > > * Clear ->cgroup to %NULL during copy_process(). I completely agree. new_child->cgroups copied from parent looks simply strange until post_fork. If nothing else, the new task is still under construction by the time cgroup_fork() is called. > > I am starting to think again about a big-rw-lock around copy_process. > > Recently I tried to add one around dup_mmap for uprobes, but perhaps > > cgroups can use it too... > > If some other subsystems need it, maybe just make threadgroup locking > coarser? What do you mean? > I *think* I can make cgroup work correctly without a agiant > rwlock Yes, probably cgroup doesn't really need it. Although we could probably kill signal->group_rwsem, but this is minor and "write-lock" will be much slower. Oleg.
WARNING: multiple messages have this Message-ID (diff)
From: Oleg Nesterov <oleg@redhat.com> To: Tejun Heo <tj@kernel.org> Cc: rjw@sisk.pl, linux-kernel@vger.kernel.org, lizefan@huawei.com, containers@lists.linux-foundation.org, cgroups@vger.kernel.org, stable@vger.kernel.org Subject: Re: [PATCH 1/7] cgroup: cgroup_subsys->fork() should be called after the task is added to css_set Date: Mon, 22 Oct 2012 20:04:45 +0200 [thread overview] Message-ID: <20121022180445.GB21553@redhat.com> (raw) In-Reply-To: <20121021192222.GB5951@atj.dyndns.org> Hi Tejun, On 10/21, Tejun Heo wrote: > > On Sun, Oct 21, 2012 at 09:11:41PM +0200, Oleg Nesterov wrote: > > > And it seems that fork() can race with cgroup iterator. post_fork > > will notice use_task_css_set_links, but until then the child belongs > > to the parent's css and it is not "visible" to iterator (and right > > after cgroup_fork() it is not visible to do_each_thread() if > > use_task_css_set_links is not set). > > > > For example. Suppose that the child migrates to another cgroup after > > copy_process() makes it visible to the user-space. Then update_if_frozen > > sets CGROUP_FROZEN (again, cgroup_iter_next do not see this child). > > > > Now, post_fork calls freezer_fork() and hits BUG_ON(CGROUP_FROZEN). > > > > But again, I do not blame this patch. > > I'm planning to update it to, > > * Clear ->cgroup to %NULL during copy_process(). I completely agree. new_child->cgroups copied from parent looks simply strange until post_fork. If nothing else, the new task is still under construction by the time cgroup_fork() is called. > > I am starting to think again about a big-rw-lock around copy_process. > > Recently I tried to add one around dup_mmap for uprobes, but perhaps > > cgroups can use it too... > > If some other subsystems need it, maybe just make threadgroup locking > coarser? What do you mean? > I *think* I can make cgroup work correctly without a agiant > rwlock Yes, probably cgroup doesn't really need it. Although we could probably kill signal->group_rwsem, but this is minor and "write-lock" will be much slower. Oleg.
next prev parent reply other threads:[~2012-10-22 18:04 UTC|newest] Thread overview: 148+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-10-16 22:28 [PATCHSET cgroup/for-3.8] cgroup_freezer: allow migration regardless of freezer state and update locking Tejun Heo 2012-10-16 22:28 ` Tejun Heo 2012-10-16 22:28 ` [PATCH 5/7] cgroup_freezer: allow moving tasks in and out of a frozen cgroup Tejun Heo [not found] ` <1350426526-14254-6-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 2012-10-22 19:25 ` Oleg Nesterov 2012-10-22 19:25 ` Oleg Nesterov 2012-10-22 19:25 ` Oleg Nesterov 2012-10-22 21:25 ` Tejun Heo 2012-10-22 21:25 ` Tejun Heo 2012-10-23 16:14 ` Oleg Nesterov 2012-10-23 16:14 ` Oleg Nesterov [not found] ` <20121022212505.GG5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org> 2012-10-23 16:14 ` Oleg Nesterov [not found] ` <20121022192506.GA27163-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-22 21:25 ` Tejun Heo 2012-10-19 16:54 ` [PATCHSET cgroup/for-3.8] cgroup_freezer: allow migration regardless of freezer state and update locking Rafael J. Wysocki 2012-10-19 16:54 ` Rafael J. Wysocki 2012-10-19 20:04 ` Tejun Heo 2012-10-19 20:04 ` Tejun Heo [not found] ` <20121019200421.GO13370-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> 2012-10-21 19:18 ` Oleg Nesterov 2012-10-21 19:18 ` Oleg Nesterov [not found] ` <20121021191853.GB26218-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-21 19:24 ` Tejun Heo 2012-10-21 19:24 ` Tejun Heo [not found] ` <2424755.Pg0O5tTD3k-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org> 2012-10-19 20:04 ` Tejun Heo [not found] ` <1350426526-14254-1-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 2012-10-16 22:28 ` [PATCH 1/7] cgroup: cgroup_subsys->fork() should be called after the task is added to css_set Tejun Heo 2012-10-16 22:28 ` Tejun Heo [not found] ` <1350426526-14254-2-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 2012-10-17 8:28 ` Li Zefan 2012-10-17 8:28 ` Li Zefan 2012-10-18 1:25 ` Li Zefan 2012-10-18 1:25 ` Li Zefan [not found] ` <507E6C4B.6000704-hv44wF8Li93QT0dZR+AlfA@public.gmane.org> 2012-10-18 1:25 ` Li Zefan 2012-10-21 19:11 ` Oleg Nesterov 2012-10-21 19:11 ` Oleg Nesterov [not found] ` <20121021191141.GA26218-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-21 19:22 ` Tejun Heo 2012-10-21 19:22 ` Tejun Heo 2012-10-21 19:22 ` Tejun Heo [not found] ` <20121021192222.GB5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org> 2012-10-22 18:04 ` Oleg Nesterov [this message] 2012-10-22 18:04 ` Oleg Nesterov [not found] ` <20121022180445.GB21553-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-22 21:16 ` Tejun Heo 2012-10-22 21:16 ` Tejun Heo [not found] ` <20121022211631.GE5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org> 2012-10-23 15:51 ` Oleg Nesterov 2012-10-23 15:51 ` Oleg Nesterov [not found] ` <20121023155128.GB16201-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-24 19:04 ` Tejun Heo 2012-10-24 19:04 ` Tejun Heo [not found] ` <20121024190458.GB12182-OlzNCW9NnSVy/B6EtB590w@public.gmane.org> 2012-10-25 17:42 ` Oleg Nesterov 2012-10-25 17:42 ` Oleg Nesterov 2012-12-20 5:25 ` Herton Ronaldo Krzesinski 2012-12-20 5:25 ` Herton Ronaldo Krzesinski 2012-12-28 21:22 ` [PATCH] cgroup: remove unused dummy cgroup_fork_callbacks() Tejun Heo 2012-12-28 21:22 ` Tejun Heo 2012-10-16 22:28 ` [PATCH 2/7] freezer: add missing mb's to freezer_count() and freezer_should_skip() Tejun Heo 2012-10-16 22:28 ` Tejun Heo [not found] ` <1350426526-14254-3-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 2012-10-22 17:44 ` Oleg Nesterov 2012-10-22 17:44 ` Oleg Nesterov [not found] ` <20121022174404.GA21553-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-22 21:13 ` Tejun Heo 2012-10-22 21:13 ` Tejun Heo [not found] ` <20121022211317.GD5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org> 2012-10-23 15:39 ` Oleg Nesterov 2012-10-23 15:39 ` Oleg Nesterov [not found] ` <20121023153919.GA16201-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-24 18:57 ` Tejun Heo 2012-10-24 18:57 ` Tejun Heo 2012-10-24 18:57 ` Tejun Heo [not found] ` <20121024185710.GA12182-OlzNCW9NnSVy/B6EtB590w@public.gmane.org> 2012-10-25 16:39 ` [PATCH 0/1] (Was: freezer: add missing mb's to freezer_count() and freezer_should_skip()) Oleg Nesterov 2012-10-25 16:39 ` Oleg Nesterov [not found] ` <20121025163941.GA3801-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-25 16:39 ` [PATCH 1/1] freezer: change ptrace_stop/do_signal_stop to use freezable_schedule() Oleg Nesterov 2012-10-25 16:39 ` Oleg Nesterov 2012-10-25 17:18 ` Tejun Heo 2012-10-25 17:18 ` Tejun Heo 2012-10-25 17:34 ` Oleg Nesterov 2012-10-25 17:34 ` Oleg Nesterov [not found] ` <20121025173433.GA7650-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-25 17:36 ` Tejun Heo 2012-10-25 17:36 ` Tejun Heo [not found] ` <20121025173632.GI11442-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org> 2012-10-26 17:45 ` [PATCH v2 0/1] " Oleg Nesterov 2012-10-26 17:45 ` Oleg Nesterov [not found] ` <20121026174545.GA21639-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-26 17:46 ` [PATCH v2 1/1] " Oleg Nesterov 2012-10-26 17:46 ` Oleg Nesterov [not found] ` <20121026174606.GB21639-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-26 17:52 ` Tejun Heo 2012-10-26 17:52 ` Tejun Heo 2012-10-26 18:01 ` Oleg Nesterov 2012-10-26 18:01 ` Oleg Nesterov 2012-10-26 21:14 ` Rafael J. Wysocki 2012-10-26 21:14 ` Rafael J. Wysocki [not found] ` <2566006.UzAQbpOjNQ-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org> 2012-10-26 21:29 ` Rafael J. Wysocki 2012-10-26 21:29 ` Rafael J. Wysocki 2012-10-26 21:29 ` Tejun Heo 2012-10-26 21:29 ` Tejun Heo [not found] ` <20121026212909.GW11442-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org> 2012-10-28 0:16 ` Rafael J. Wysocki 2012-10-28 0:16 ` Rafael J. Wysocki 2012-10-28 0:16 ` Rafael J. Wysocki [not found] ` <2718983.vORnrfWdbE-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org> 2012-10-26 21:29 ` Tejun Heo [not found] ` <20121026180149.GA22421-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-26 21:14 ` Rafael J. Wysocki [not found] ` <20121026175258.GV11442-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org> 2012-10-26 18:01 ` Oleg Nesterov 2012-10-27 22:22 ` Ben Hutchings 2012-10-27 22:22 ` Ben Hutchings 2012-10-27 22:22 ` Ben Hutchings [not found] ` <1351376558.21585.1.camel-nDn/Rdv9kqW9Jme8/bJn5UCKIB8iOfG2tUK59QYPAWc@public.gmane.org> 2012-10-28 13:45 ` Oleg Nesterov 2012-10-28 13:45 ` Oleg Nesterov [not found] ` <20121025171812.GE11442-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org> 2012-10-25 17:34 ` [PATCH " Oleg Nesterov [not found] ` <20121025163959.GB3801-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-25 17:18 ` Tejun Heo 2012-10-16 22:28 ` [PATCH 3/7] cgroup_freezer: make it official that writes to freezer.state don't fail Tejun Heo 2012-10-16 22:28 ` Tejun Heo 2012-10-16 22:28 ` [PATCH 4/7] cgroup_freezer: don't stall transition to FROZEN for PF_NOFREEZE or PF_FREEZER_SKIP tasks Tejun Heo 2012-10-16 22:28 ` Tejun Heo 2012-10-22 18:34 ` Oleg Nesterov 2012-10-22 18:34 ` Oleg Nesterov [not found] ` <20121022183453.GA24687-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-22 21:18 ` Tejun Heo 2012-10-22 21:18 ` Tejun Heo 2012-10-23 15:55 ` Oleg Nesterov 2012-10-23 15:55 ` Oleg Nesterov [not found] ` <20121023155533.GC16201-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-24 19:06 ` Tejun Heo 2012-10-24 19:06 ` Tejun Heo [not found] ` <20121024190651.GC12182-OlzNCW9NnSVy/B6EtB590w@public.gmane.org> 2012-10-25 17:12 ` [PATCH 0/1] (Was: cgroup_freezer: don't stall transition to FROZEN for PF_NOFREEZE or PF_FREEZER_SKIP tasks) Oleg Nesterov 2012-10-25 17:12 ` Oleg Nesterov [not found] ` <20121025171236.GA6776-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-25 17:12 ` [PATCH 1/1] freezer: exec should clear PF_NOFREEZE along with PF_KTHREAD Oleg Nesterov 2012-10-25 17:12 ` Oleg Nesterov 2012-10-25 17:20 ` Tejun Heo 2012-10-25 17:20 ` Tejun Heo [not found] ` <20121025172016.GF11442-Gd/HAXX7CRxy/B6EtB590w@public.gmane.org> 2012-10-25 17:37 ` Oleg Nesterov 2012-10-25 17:37 ` Oleg Nesterov [not found] ` <20121025173756.GB7650-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-25 17:37 ` Tejun Heo 2012-10-25 17:37 ` Tejun Heo 2012-10-25 20:13 ` Rafael J. Wysocki [not found] ` <CAOS58YPAVVr=itauGD9eTpfRLSBLuM8Bpyuq9AP73MDr8dPmiQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2012-10-25 20:13 ` Rafael J. Wysocki [not found] ` <20121025171256.GB6776-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org> 2012-10-25 17:20 ` Tejun Heo [not found] ` <20121022211822.GF5951-OlzNCW9NnSVy/B6EtB590w@public.gmane.org> 2012-10-23 15:55 ` [PATCH 4/7] cgroup_freezer: don't stall transition to FROZEN for PF_NOFREEZE or PF_FREEZER_SKIP tasks Oleg Nesterov [not found] ` <1350426526-14254-5-git-send-email-tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> 2012-10-22 18:34 ` Oleg Nesterov 2012-10-16 22:28 ` [PATCH 5/7] cgroup_freezer: allow moving tasks in and out of a frozen cgroup Tejun Heo 2012-10-16 22:28 ` [PATCH 6/7] cgroup_freezer: prepare update_if_frozen() for locking change Tejun Heo 2012-10-16 22:28 ` Tejun Heo 2012-10-16 22:28 ` [PATCH 7/7] cgroup_freezer: don't use cgroup_lock_live_group() Tejun Heo 2012-10-16 22:28 ` Tejun Heo 2012-10-17 19:16 ` [PATCHSET cgroup/for-3.8] cgroup_freezer: allow migration regardless of freezer state and update locking Matt Helsley 2012-10-17 19:16 ` Matt Helsley [not found] ` <20121017191606.GA6223-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> 2012-10-18 21:14 ` Tejun Heo 2012-10-18 21:14 ` Tejun Heo 2012-10-18 21:14 ` Tejun Heo [not found] ` <20121018211434.GI13370-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> 2012-10-18 22:21 ` Matt Helsley 2012-10-18 22:21 ` Matt Helsley [not found] ` <20121018222155.GB6223-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> 2012-10-18 22:35 ` Tejun Heo 2012-10-18 22:35 ` Tejun Heo [not found] ` <20121018223517.GQ13370-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> 2012-10-18 23:47 ` Matt Helsley 2012-10-18 23:47 ` Matt Helsley 2012-10-19 0:01 ` Tejun Heo 2012-10-19 0:01 ` Tejun Heo 2012-10-19 1:29 ` Matt Helsley 2012-10-19 1:29 ` Matt Helsley 2012-10-19 20:02 ` Tejun Heo 2012-10-19 20:02 ` Tejun Heo [not found] ` <20121019012945.GD6223-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> 2012-10-19 20:02 ` Tejun Heo [not found] ` <20121019000153.GZ13370-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org> 2012-10-19 1:29 ` Matt Helsley [not found] ` <20121018234726.GC6223-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org> 2012-10-19 0:01 ` Tejun Heo 2012-10-19 16:54 ` Rafael J. Wysocki
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=20121022180445.GB21553@redhat.com \ --to=oleg-h+wxahxf7alqt0dzr+alfa@public.gmane.org \ --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \ --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=rjw-KKrjLPT3xs0@public.gmane.org \ --cc=stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \ --cc=tj-DgEjT+Ai2ygdnm+yROfE0A@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: linkBe 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.