Stefan reported a crash on a kernel before a3e5d1091c1 ("sched:
Don't call task_group() too many times in set_task_rq()"), he
found the reason to be that the multiple task_group()
invocations in set_task_rq() returned different values.
Looking at all that I found a lack of serialization and plain
wrong comments.
The below tries to fix it using an extra pointer which is
updated under the appropriate scheduler locks. Its not pretty,
but I can't really see another way given how all the cgroup
stuff works.
Reported-and-tested-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1340364965.18025.71.camel@twins
Signed-off-by: Ingo Molnar <mingo@kernel.org>
|
||
|---|---|---|
| .. | ||
| auto_group.c | ||
| auto_group.h | ||
| clock.c | ||
| core.c | ||
| cpupri.c | ||
| cpupri.h | ||
| debug.c | ||
| fair.c | ||
| features.h | ||
| idle_task.c | ||
| Makefile | ||
| rt.c | ||
| sched.h | ||
| stats.c | ||
| stats.h | ||
| stop_task.c | ||