Re: [PATCH UPDATED 03/10] threadgroup: extend threadgroup_lock() to cover exit and exec
From: Frederic Weisbecker <hidden>
Date: 2011-12-02 16:28:12
Also in:
lkml
On Sun, Nov 27, 2011 at 11:30:01AM -0800, Tejun Heo wrote:
Hello, Frederic. On Fri, Nov 25, 2011 at 03:01:39PM +0100, Frederic Weisbecker wrote:quoted
quoted
+ /* + * @tsk's threadgroup is going through changes - lock out users + * which expect stable threadgroup. Do this before actually + * starting tearing down @tsk so that locked threadgroup has either + * alive or dead tasks, not something inbetween. + */ + threadgroup_change_begin(tsk); +I still wonder why there is a so big coverage of this lock. I mean why is it called right before exit_irq_thread() and released so late. All we want is to lock cgroup_exit() I think, after which tasks can't be migrated.That way, cgroup plugins never see tasks in the process of deconstruction. Its ->mm, ->sighand, ->signal and so on either don't exist or continue to exist across all cgroup callbacks. It's simpler and safer (especially as bugs in this area would only be visible when migration and exit race), and if we're gonna synchronize exit path at all, there isn't anything to lose by excluding the whole thing.
Fine. But I don't think it's very useful to protect against irq_exit_thread(), what happens there is purely of internal irq interest. Then right after, PF_EXITING is set before any interesting change. Isn't it possible to simply lock this flag setting? IIRC, as soon as the PF_EXITING flag is set, you ignore the task for attachment.