From: Greg Kroah-Hartman Date: Mon, 4 Feb 2013 21:48:25 +0000 (-0800) Subject: 3.4-stable patches X-Git-Tag: v3.0.63~15 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=25c4aefc0f93c72b690ad01b00134a5a41e809a1;p=thirdparty%2Fkernel%2Fstable-queue.git 3.4-stable patches 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 --- 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 index 00000000000..f15d6b5be35 --- /dev/null +++ b/queue-3.4/sched-rt-use-root_domain-of-rt_rq-not-current-processor.patch @@ -0,0 +1,48 @@ +From aa7f67304d1a03180f463258aa6f15a8b434e77d Mon Sep 17 00:00:00 2001 +From: Shawn Bohrer +Date: Mon, 14 Jan 2013 11:55:31 -0600 +Subject: sched/rt: Use root_domain of rt_rq not current processor + +From: Shawn Bohrer + +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 +Acked-by: Steven Rostedt +Acked-by: Mike Galbraith +Cc: peterz@infradead.org +Link: http://lkml.kernel.org/r/1358186131-29494-1-git-send-email-sbohrer@rgmadvisors.com +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + 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; + diff --git a/queue-3.4/series b/queue-3.4/series index 3ab1e104c0f..43b13849dc9 100644 --- a/queue-3.4/series +++ b/queue-3.4/series @@ -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 index 00000000000..e50c7b202cd --- /dev/null +++ b/queue-3.4/x86-64-replace-left-over-sti-cli-in-ia32-audit-exit-code.patch @@ -0,0 +1,53 @@ +From 40a1ef95da85843696fc3ebe5fce39b0db32669f Mon Sep 17 00:00:00 2001 +From: Jan Beulich +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 + +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 +Signed-off-by: Jan Beulich +Cc: David Vrabel +Cc: Konrad Rzeszutek Wilk +Link: http://lkml.kernel.org/r/5108E01902000078000BA9C5@nat28.tlf.novell.com +Signed-off-by: Ingo Molnar +Cc: Konrad Rzeszutek Wilk +Cc: David Vrabel +Tested-by: Peter Moody +Signed-off-by: Greg Kroah-Hartman + +--- + 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