]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Apr 2013 22:28:52 +0000 (15:28 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 19 Apr 2013 22:28:52 +0000 (15:28 -0700)
added patches:
sched-convert-bug_on-s-in-try_to_wake_up_local-to-warn_on_once-s.patch

queue-3.4/sched-convert-bug_on-s-in-try_to_wake_up_local-to-warn_on_once-s.patch [new file with mode: 0644]
queue-3.4/series

diff --git a/queue-3.4/sched-convert-bug_on-s-in-try_to_wake_up_local-to-warn_on_once-s.patch b/queue-3.4/sched-convert-bug_on-s-in-try_to_wake_up_local-to-warn_on_once-s.patch
new file mode 100644 (file)
index 0000000..b01f380
--- /dev/null
@@ -0,0 +1,45 @@
+From 383efcd00053ec40023010ce5034bd702e7ab373 Mon Sep 17 00:00:00 2001
+From: Tejun Heo <tj@kernel.org>
+Date: Mon, 18 Mar 2013 12:22:34 -0700
+Subject: sched: Convert BUG_ON()s in try_to_wake_up_local() to WARN_ON_ONCE()s
+
+From: Tejun Heo <tj@kernel.org>
+
+commit 383efcd00053ec40023010ce5034bd702e7ab373 upstream.
+
+try_to_wake_up_local() should only be invoked to wake up another
+task in the same runqueue and BUG_ON()s are used to enforce the
+rule. Missing try_to_wake_up_local() can stall workqueue
+execution but such stalls are likely to be finite either by
+another work item being queued or the one blocked getting
+unblocked.  There's no reason to trigger BUG while holding rq
+lock crashing the whole system.
+
+Convert BUG_ON()s in try_to_wake_up_local() to WARN_ON_ONCE()s.
+
+Signed-off-by: Tejun Heo <tj@kernel.org>
+Acked-by: Steven Rostedt <rostedt@goodmis.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Link: http://lkml.kernel.org/r/20130318192234.GD3042@htj.dyndns.org
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/sched/core.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/kernel/sched/core.c
++++ b/kernel/sched/core.c
+@@ -1653,8 +1653,10 @@ static void try_to_wake_up_local(struct
+ {
+       struct rq *rq = task_rq(p);
+-      BUG_ON(rq != this_rq());
+-      BUG_ON(p == current);
++      if (WARN_ON_ONCE(rq != this_rq()) ||
++          WARN_ON_ONCE(p == current))
++              return;
++
+       lockdep_assert_held(&rq->lock);
+       if (!raw_spin_trylock(&p->pi_lock)) {
index a2ed429b9c1585212c4a4f5f10b98b9caf36a032..8a7a8f8a8927f287e47bed6e1c45c092d0633f45 100644 (file)
@@ -8,3 +8,4 @@ kvm-x86-fix-for-buffer-overflow-in-handling-of-msr_kvm_system_time-cve-2013-1796
 kvm-x86-convert-msr_kvm_system_time-to-use-gfn_to_hva_cache-functions-cve-2013-1797.patch
 kvm-fix-bounds-checking-in-ioapic-indirect-register-reads-cve-2013-1798.patch
 kvm-allow-cross-page-reads-and-writes-from-cached-translations.patch
+sched-convert-bug_on-s-in-try_to_wake_up_local-to-warn_on_once-s.patch