From 2ab7d4c49267beaf52fdedb1aee4f830a6827f7b Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 9 Jun 2014 12:14:38 -0700 Subject: [PATCH] 3.10-stable patches added patches: sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch --- ...fix-hotplug-vs.-set_cpus_allowed_ptr.patch | 70 +++++++++++++++++++ queue-3.10/series | 1 + 2 files changed, 71 insertions(+) create mode 100644 queue-3.10/sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch diff --git a/queue-3.10/sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch b/queue-3.10/sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch new file mode 100644 index 00000000000..8d7bd9d6f1b --- /dev/null +++ b/queue-3.10/sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch @@ -0,0 +1,70 @@ +From 6acbfb96976fc3350e30d964acb1dbbdf876d55e Mon Sep 17 00:00:00 2001 +From: Lai Jiangshan +Date: Fri, 16 May 2014 11:50:42 +0800 +Subject: sched: Fix hotplug vs. set_cpus_allowed_ptr() + +From: Lai Jiangshan + +commit 6acbfb96976fc3350e30d964acb1dbbdf876d55e upstream. + +Lai found that: + + WARNING: CPU: 1 PID: 13 at arch/x86/kernel/smp.c:124 native_smp_send_reschedule+0x2d/0x4b() + ... + migration_cpu_stop+0x1d/0x22 + +was caused by set_cpus_allowed_ptr() assuming that cpu_active_mask is +always a sub-set of cpu_online_mask. + +This isn't true since 5fbd036b552f ("sched: Cleanup cpu_active madness"). + +So set active and online at the same time to avoid this particular +problem. + +Fixes: 5fbd036b552f ("sched: Cleanup cpu_active madness") +Signed-off-by: Lai Jiangshan +Signed-off-by: Peter Zijlstra +Cc: Andrew Morton +Cc: Gautham R. Shenoy +Cc: Linus Torvalds +Cc: Michael wang +Cc: Paul Gortmaker +Cc: Rafael J. Wysocki +Cc: Srivatsa S. Bhat +Cc: Toshi Kani +Link: http://lkml.kernel.org/r/53758B12.8060609@cn.fujitsu.com +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/cpu.c | 6 ++++-- + kernel/sched/core.c | 1 - + 2 files changed, 4 insertions(+), 3 deletions(-) + +--- a/kernel/cpu.c ++++ b/kernel/cpu.c +@@ -698,10 +698,12 @@ void set_cpu_present(unsigned int cpu, b + + void set_cpu_online(unsigned int cpu, bool online) + { +- if (online) ++ if (online) { + cpumask_set_cpu(cpu, to_cpumask(cpu_online_bits)); +- else ++ cpumask_set_cpu(cpu, to_cpumask(cpu_active_bits)); ++ } else { + cpumask_clear_cpu(cpu, to_cpumask(cpu_online_bits)); ++ } + } + + void set_cpu_active(unsigned int cpu, bool active) +--- a/kernel/sched/core.c ++++ b/kernel/sched/core.c +@@ -5270,7 +5270,6 @@ static int __cpuinit sched_cpu_active(st + unsigned long action, void *hcpu) + { + switch (action & ~CPU_TASKS_FROZEN) { +- case CPU_STARTING: + case CPU_DOWN_FAILED: + set_cpu_active((long)hcpu, true); + return NOTIFY_OK; diff --git a/queue-3.10/series b/queue-3.10/series index d31d91faea8..7b53c05e3ec 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -16,3 +16,4 @@ arm-omap3-clock-back-propagate-rate-change-from-cam_mclk-to-dpll4_m5-on-all-omap arm-omap4-fix-the-boot-regression-with-cpu_idle-enabled.patch arm-8051-1-put_user-fix-possible-data-corruption-in-put_user.patch dm-cache-always-split-discards-on-cache-block-boundaries.patch +sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch -- 2.47.3