]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.4-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 4 Feb 2013 21:48:25 +0000 (13:48 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 4 Feb 2013 21:48:25 +0000 (13:48 -0800)
added patches:
sched-rt-use-root_domain-of-rt_rq-not-current-processor.patch
x86-64-replace-left-over-sti-cli-in-ia32-audit-exit-code.patch

queue-3.4/sched-rt-use-root_domain-of-rt_rq-not-current-processor.patch [new file with mode: 0644]
queue-3.4/series
queue-3.4/x86-64-replace-left-over-sti-cli-in-ia32-audit-exit-code.patch [new file with mode: 0644]

diff --git a/queue-3.4/sched-rt-use-root_domain-of-rt_rq-not-current-processor.patch b/queue-3.4/sched-rt-use-root_domain-of-rt_rq-not-current-processor.patch
new file mode 100644 (file)
index 0000000..f15d6b5
--- /dev/null
@@ -0,0 +1,48 @@
+From aa7f67304d1a03180f463258aa6f15a8b434e77d Mon Sep 17 00:00:00 2001
+From: Shawn Bohrer <sbohrer@rgmadvisors.com>
+Date: Mon, 14 Jan 2013 11:55:31 -0600
+Subject: sched/rt: Use root_domain of rt_rq not current processor
+
+From: Shawn Bohrer <sbohrer@rgmadvisors.com>
+
+commit aa7f67304d1a03180f463258aa6f15a8b434e77d upstream.
+
+When the system has multiple domains do_sched_rt_period_timer()
+can run on any CPU and may iterate over all rt_rq in
+cpu_online_mask.  This means when balance_runtime() is run for a
+given rt_rq that rt_rq may be in a different rd than the current
+processor.  Thus if we use smp_processor_id() to get rd in
+do_balance_runtime() we may borrow runtime from a rt_rq that is
+not part of our rd.
+
+This changes do_balance_runtime to get the rd from the passed in
+rt_rq ensuring that we borrow runtime only from the correct rd
+for the given rt_rq.
+
+This fixes a BUG at kernel/sched/rt.c:687! in __disable_runtime
+when we try reclaim runtime lent to other rt_rq but runtime has
+been lent to a rt_rq in another rd.
+
+Signed-off-by: Shawn Bohrer <sbohrer@rgmadvisors.com>
+Acked-by: Steven Rostedt <rostedt@goodmis.org>
+Acked-by: Mike Galbraith <bitbucket@online.de>
+Cc: peterz@infradead.org
+Link: http://lkml.kernel.org/r/1358186131-29494-1-git-send-email-sbohrer@rgmadvisors.com
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ kernel/sched/rt.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/sched/rt.c
++++ b/kernel/sched/rt.c
+@@ -560,7 +560,7 @@ static inline struct rt_bandwidth *sched
+ static int do_balance_runtime(struct rt_rq *rt_rq)
+ {
+       struct rt_bandwidth *rt_b = sched_rt_bandwidth(rt_rq);
+-      struct root_domain *rd = cpu_rq(smp_processor_id())->rd;
++      struct root_domain *rd = rq_of_rt_rq(rt_rq)->rd;
+       int i, weight, more = 0;
+       u64 rt_period;
index 3ab1e104c0f48b50207fd3683b402d321be6311b..43b13849dc99ece2c537805392a378e3b4cf50a4 100644 (file)
@@ -5,3 +5,5 @@ drm-radeon-add-quirk-for-rv100-board.patch
 drm-radeon-fix-mc-blackout-on-evergreen.patch
 drm-radeon-prevent-crash-in-the-ring-space-allocation.patch
 drm-radeon-calling-object_unrefer-when-creating-fb-failure.patch
+x86-64-replace-left-over-sti-cli-in-ia32-audit-exit-code.patch
+sched-rt-use-root_domain-of-rt_rq-not-current-processor.patch
diff --git a/queue-3.4/x86-64-replace-left-over-sti-cli-in-ia32-audit-exit-code.patch b/queue-3.4/x86-64-replace-left-over-sti-cli-in-ia32-audit-exit-code.patch
new file mode 100644 (file)
index 0000000..e50c7b2
--- /dev/null
@@ -0,0 +1,53 @@
+From 40a1ef95da85843696fc3ebe5fce39b0db32669f Mon Sep 17 00:00:00 2001
+From: Jan Beulich <JBeulich@suse.com>
+Date: Wed, 30 Jan 2013 07:55:53 +0000
+Subject: x86-64: Replace left over sti/cli in ia32 audit exit code
+
+From: Jan Beulich <JBeulich@suse.com>
+
+commit 40a1ef95da85843696fc3ebe5fce39b0db32669f upstream.
+
+For some reason they didn't get replaced so far by their
+paravirt equivalents, resulting in code to be run with
+interrupts disabled that doesn't expect so (causing, in the
+observed case, a BUG_ON() to trigger) when syscall auditing is
+enabled.
+
+David (Cc-ed) came up with an identical fix, so likely this can
+be taken to count as an ack from him.
+
+Reported-by: Peter Moody <pmoody@google.com>
+Signed-off-by: Jan Beulich <jbeulich@suse.com>
+Cc: David Vrabel <david.vrabel@citrix.com>
+Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Link: http://lkml.kernel.org/r/5108E01902000078000BA9C5@nat28.tlf.novell.com
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
+Cc: David Vrabel <david.vrabel@citrix.com>
+Tested-by: Peter Moody <pmoody@google.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/x86/ia32/ia32entry.S |    4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+--- a/arch/x86/ia32/ia32entry.S
++++ b/arch/x86/ia32/ia32entry.S
+@@ -205,7 +205,7 @@ sysexit_from_sys_call:
+       testl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET)
+       jnz ia32_ret_from_sys_call
+       TRACE_IRQS_ON
+-      sti
++      ENABLE_INTERRUPTS(CLBR_NONE)
+       movl %eax,%esi          /* second arg, syscall return value */
+       cmpl $-MAX_ERRNO,%eax   /* is it an error ? */
+       jbe 1f
+@@ -215,7 +215,7 @@ sysexit_from_sys_call:
+       call __audit_syscall_exit
+       movq RAX-ARGOFFSET(%rsp),%rax   /* reload syscall return value */
+       movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi
+-      cli
++      DISABLE_INTERRUPTS(CLBR_NONE)
+       TRACE_IRQS_OFF
+       testl %edi,TI_flags+THREAD_INFO(%rsp,RIP-ARGOFFSET)
+       jz \exit