summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-08-31 20:55:23 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2015-08-31 20:55:23 -0700
commit418c2e1f67658460533e4aaa7a0bcc64290ec951 (patch)
tree3ac2d1c0741297dd591efc4eab0918ad4ed5f530
parenta1d8561172f369ba56d636df49a6b4d6d77e2123 (diff)
parentdd9d3843755da95f63dd3a376f62b3e45c011210 (diff)
Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull scheduler fix from Ingo Molnar: "This is a leftover scheduler fix from the v4.2 cycle" * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: sched: Fix cpu_active_mask/cpu_online_mask race
-rw-r--r--kernel/sched/core.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index a585c7b2ccf0..7819725e9da8 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -5488,6 +5488,14 @@ static int sched_cpu_active(struct notifier_block *nfb,
case CPU_STARTING:
set_cpu_rq_start_time();
return NOTIFY_OK;
+ case CPU_ONLINE:
+ /*
+ * At this point a starting CPU has marked itself as online via
+ * set_cpu_online(). But it might not yet have marked itself
+ * as active, which is essential from here on.
+ *
+ * Thus, fall-through and help the starting CPU along.
+ */
case CPU_DOWN_FAILED:
set_cpu_active((long)hcpu, true);
return NOTIFY_OK;