]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Jun 2014 19:15:00 +0000 (12:15 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 9 Jun 2014 19:15:00 +0000 (12:15 -0700)
added patches:
sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch

queue-3.4/sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch [new file with mode: 0644]
queue-3.4/series

diff --git a/queue-3.4/sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch b/queue-3.4/sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch
new file mode 100644 (file)
index 0000000..acaf2ba
--- /dev/null
@@ -0,0 +1,70 @@
+From 6acbfb96976fc3350e30d964acb1dbbdf876d55e Mon Sep 17 00:00:00 2001
+From: Lai Jiangshan <laijs@cn.fujitsu.com>
+Date: Fri, 16 May 2014 11:50:42 +0800
+Subject: sched: Fix hotplug vs. set_cpus_allowed_ptr()
+
+From: Lai Jiangshan <laijs@cn.fujitsu.com>
+
+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 <laijs@cn.fujitsu.com>
+Signed-off-by: Peter Zijlstra <peterz@infradead.org>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Cc: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Michael wang <wangyun@linux.vnet.ibm.com>
+Cc: Paul Gortmaker <paul.gortmaker@windriver.com>
+Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
+Cc: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
+Cc: Toshi Kani <toshi.kani@hp.com>
+Link: http://lkml.kernel.org/r/53758B12.8060609@cn.fujitsu.com
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/cpu.c        |    6 ++++--
+ kernel/sched/core.c |    1 -
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+--- a/kernel/cpu.c
++++ b/kernel/cpu.c
+@@ -631,10 +631,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
+@@ -5656,7 +5656,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;
index b8d4dbcf912ab0c1f4e6a617dde500463e231a3f..148d5462d70505b88605b5c1a0018a71d428ddc3 100644 (file)
@@ -4,3 +4,4 @@ perf-limit-perf_event_attr-sample_period-to-63-bits.patch
 perf-fix-race-in-removing-an-event.patch
 mm-memory-failure.c-fix-memory-leak-by-race-between-poison-and-unpoison.patch
 arm-8051-1-put_user-fix-possible-data-corruption-in-put_user.patch
+sched-fix-hotplug-vs.-set_cpus_allowed_ptr.patch