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

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

diff --git a/queue-3.0/sched-convert-bug_on-s-in-try_to_wake_up_local-to-warn_on_once-s.patch b/queue-3.0/sched-convert-bug_on-s-in-try_to_wake_up_local-to-warn_on_once-s.patch
new file mode 100644 (file)
index 0000000..aad0d8e
--- /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.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/kernel/sched.c
++++ b/kernel/sched.c
+@@ -2743,8 +2743,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 4ca2e007d1f29d78b0edef1c6fd3c5bd405e68e2..31ef644a44394a5804de982097e954bbbce0a8f4 100644 (file)
@@ -11,3 +11,4 @@ kvm-allow-cross-page-reads-and-writes-from-cached-translations.patch
 arm-7696-1-fix-kexec-by-setting-outer_cache.inv_all-for-feroceon.patch
 ath9k_htc-accept-1.x-firmware-newer-than-1.3.patch
 
+sched-convert-bug_on-s-in-try_to_wake_up_local-to-warn_on_once-s.patch