Update to 3.11.6
svn path=/dists/sid/linux/; revision=20733
This commit is contained in:
parent
e9eb0a0dd2
commit
64facf96c4
|
@ -1,4 +1,11 @@
|
||||||
linux (3.11.5-2) UNRELEASED; urgency=low
|
linux (3.11.6-1) UNRELEASED; urgency=low
|
||||||
|
|
||||||
|
* New upstream stable update:
|
||||||
|
http://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.11.6
|
||||||
|
- random: run random_int_secret_init() run after all late_initcalls
|
||||||
|
- ext4: fix memory leak in xattr
|
||||||
|
- KVM: PPC: Book3S HV: Fix typo in saving DSCR
|
||||||
|
- ipc: Apply mainline changes up to 3.12-rc5
|
||||||
|
|
||||||
[ Ian Campbell ]
|
[ Ian Campbell ]
|
||||||
* [armhf] Enable Xen and virtio for armmp and armmp-lpae as well as KVM for
|
* [armhf] Enable Xen and virtio for armmp and armmp-lpae as well as KVM for
|
||||||
|
|
|
@ -1,169 +0,0 @@
|
||||||
From: Ingo Molnar <mingo@kernel.org>
|
|
||||||
Date: Tue, 15 Oct 2013 08:23:51 +0200
|
|
||||||
Subject: [PATCH] compiler/gcc4: Add quirk for 'asm goto' miscompilation bug
|
|
||||||
Origin: https://lkml.kernel.org/g/20131015062933.GB4666@gmail.com
|
|
||||||
|
|
||||||
Fengguang Wu, Oleg Nesterov and Peter Zijlstra tracked down
|
|
||||||
a kernel crash to a GCC bug: GCC miscompiles certain 'asm goto'
|
|
||||||
constructs, as outlined here:
|
|
||||||
|
|
||||||
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
|
||||||
|
|
||||||
Implement a workaround suggested by Jakub Jelinek.
|
|
||||||
|
|
||||||
Reported-and-tested-by: Fengguang Wu <fengguang.wu@intel.com>
|
|
||||||
Reported-by: Oleg Nesterov <oleg@redhat.com>
|
|
||||||
Reported-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
|
|
||||||
Suggested-by: Jakub Jelinek <jakub@redhat.com>
|
|
||||||
Reviewed-by: Richard Henderson <rth@twiddle.net>
|
|
||||||
Cc: Linus Torvalds <torvalds@linux-foundation.org>
|
|
||||||
Cc: Andrew Morton <akpm@linux-foundation.org>
|
|
||||||
Cc: <stable@kernel.org>
|
|
||||||
Link: http://lkml.kernel.org/r/20131015062351.GA4666@gmail.com
|
|
||||||
Signed-off-by: Ingo Molnar <mingo@kernel.org>
|
|
||||||
---
|
|
||||||
arch/arm/include/asm/jump_label.h | 2 +-
|
|
||||||
arch/mips/include/asm/jump_label.h | 2 +-
|
|
||||||
arch/powerpc/include/asm/jump_label.h | 2 +-
|
|
||||||
arch/s390/include/asm/jump_label.h | 2 +-
|
|
||||||
arch/sparc/include/asm/jump_label.h | 2 +-
|
|
||||||
arch/x86/include/asm/cpufeature.h | 6 +++---
|
|
||||||
arch/x86/include/asm/jump_label.h | 2 +-
|
|
||||||
include/linux/compiler-gcc4.h | 15 +++++++++++++++
|
|
||||||
8 files changed, 24 insertions(+), 9 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/arch/arm/include/asm/jump_label.h b/arch/arm/include/asm/jump_label.h
|
|
||||||
index bfc198c..863c892 100644
|
|
||||||
--- a/arch/arm/include/asm/jump_label.h
|
|
||||||
+++ b/arch/arm/include/asm/jump_label.h
|
|
||||||
@@ -16,7 +16,7 @@
|
|
||||||
|
|
||||||
static __always_inline bool arch_static_branch(struct static_key *key)
|
|
||||||
{
|
|
||||||
- asm goto("1:\n\t"
|
|
||||||
+ asm_volatile_goto("1:\n\t"
|
|
||||||
JUMP_LABEL_NOP "\n\t"
|
|
||||||
".pushsection __jump_table, \"aw\"\n\t"
|
|
||||||
".word 1b, %l[l_yes], %c0\n\t"
|
|
||||||
diff --git a/arch/mips/include/asm/jump_label.h b/arch/mips/include/asm/jump_label.h
|
|
||||||
index 4d6d77e..e194f95 100644
|
|
||||||
--- a/arch/mips/include/asm/jump_label.h
|
|
||||||
+++ b/arch/mips/include/asm/jump_label.h
|
|
||||||
@@ -22,7 +22,7 @@
|
|
||||||
|
|
||||||
static __always_inline bool arch_static_branch(struct static_key *key)
|
|
||||||
{
|
|
||||||
- asm goto("1:\tnop\n\t"
|
|
||||||
+ asm_volatile_goto("1:\tnop\n\t"
|
|
||||||
"nop\n\t"
|
|
||||||
".pushsection __jump_table, \"aw\"\n\t"
|
|
||||||
WORD_INSN " 1b, %l[l_yes], %0\n\t"
|
|
||||||
diff --git a/arch/powerpc/include/asm/jump_label.h b/arch/powerpc/include/asm/jump_label.h
|
|
||||||
index ae098c4..f016bb6 100644
|
|
||||||
--- a/arch/powerpc/include/asm/jump_label.h
|
|
||||||
+++ b/arch/powerpc/include/asm/jump_label.h
|
|
||||||
@@ -19,7 +19,7 @@
|
|
||||||
|
|
||||||
static __always_inline bool arch_static_branch(struct static_key *key)
|
|
||||||
{
|
|
||||||
- asm goto("1:\n\t"
|
|
||||||
+ asm_volatile_goto("1:\n\t"
|
|
||||||
"nop\n\t"
|
|
||||||
".pushsection __jump_table, \"aw\"\n\t"
|
|
||||||
JUMP_ENTRY_TYPE "1b, %l[l_yes], %c0\n\t"
|
|
||||||
diff --git a/arch/s390/include/asm/jump_label.h b/arch/s390/include/asm/jump_label.h
|
|
||||||
index 6c32190..346b1c8 100644
|
|
||||||
--- a/arch/s390/include/asm/jump_label.h
|
|
||||||
+++ b/arch/s390/include/asm/jump_label.h
|
|
||||||
@@ -15,7 +15,7 @@
|
|
||||||
|
|
||||||
static __always_inline bool arch_static_branch(struct static_key *key)
|
|
||||||
{
|
|
||||||
- asm goto("0: brcl 0,0\n"
|
|
||||||
+ asm_volatile_goto("0: brcl 0,0\n"
|
|
||||||
".pushsection __jump_table, \"aw\"\n"
|
|
||||||
ASM_ALIGN "\n"
|
|
||||||
ASM_PTR " 0b, %l[label], %0\n"
|
|
||||||
diff --git a/arch/sparc/include/asm/jump_label.h b/arch/sparc/include/asm/jump_label.h
|
|
||||||
index 5080d16..ec2e2e2 100644
|
|
||||||
--- a/arch/sparc/include/asm/jump_label.h
|
|
||||||
+++ b/arch/sparc/include/asm/jump_label.h
|
|
||||||
@@ -9,7 +9,7 @@
|
|
||||||
|
|
||||||
static __always_inline bool arch_static_branch(struct static_key *key)
|
|
||||||
{
|
|
||||||
- asm goto("1:\n\t"
|
|
||||||
+ asm_volatile_goto("1:\n\t"
|
|
||||||
"nop\n\t"
|
|
||||||
"nop\n\t"
|
|
||||||
".pushsection __jump_table, \"aw\"\n\t"
|
|
||||||
diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h
|
|
||||||
index 47538a6..7290585 100644
|
|
||||||
--- a/arch/x86/include/asm/cpufeature.h
|
|
||||||
+++ b/arch/x86/include/asm/cpufeature.h
|
|
||||||
@@ -373,7 +373,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
|
|
||||||
* Catch too early usage of this before alternatives
|
|
||||||
* have run.
|
|
||||||
*/
|
|
||||||
- asm goto("1: jmp %l[t_warn]\n"
|
|
||||||
+ asm_volatile_goto("1: jmp %l[t_warn]\n"
|
|
||||||
"2:\n"
|
|
||||||
".section .altinstructions,\"a\"\n"
|
|
||||||
" .long 1b - .\n"
|
|
||||||
@@ -386,7 +386,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
|
|
||||||
: : "i" (X86_FEATURE_ALWAYS) : : t_warn);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
- asm goto("1: jmp %l[t_no]\n"
|
|
||||||
+ asm_volatile_goto("1: jmp %l[t_no]\n"
|
|
||||||
"2:\n"
|
|
||||||
".section .altinstructions,\"a\"\n"
|
|
||||||
" .long 1b - .\n"
|
|
||||||
@@ -448,7 +448,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
|
|
||||||
* have. Thus, we force the jump to the widest, 4-byte, signed relative
|
|
||||||
* offset even though the last would often fit in less bytes.
|
|
||||||
*/
|
|
||||||
- asm goto("1: .byte 0xe9\n .long %l[t_dynamic] - 2f\n"
|
|
||||||
+ asm_volatile_goto("1: .byte 0xe9\n .long %l[t_dynamic] - 2f\n"
|
|
||||||
"2:\n"
|
|
||||||
".section .altinstructions,\"a\"\n"
|
|
||||||
" .long 1b - .\n" /* src offset */
|
|
||||||
diff --git a/arch/x86/include/asm/jump_label.h b/arch/x86/include/asm/jump_label.h
|
|
||||||
index 3a16c14..0297669 100644
|
|
||||||
--- a/arch/x86/include/asm/jump_label.h
|
|
||||||
+++ b/arch/x86/include/asm/jump_label.h
|
|
||||||
@@ -13,7 +13,7 @@
|
|
||||||
|
|
||||||
static __always_inline bool arch_static_branch(struct static_key *key)
|
|
||||||
{
|
|
||||||
- asm goto("1:"
|
|
||||||
+ asm_volatile_goto("1:"
|
|
||||||
STATIC_KEY_INITIAL_NOP
|
|
||||||
".pushsection __jump_table, \"aw\" \n\t"
|
|
||||||
_ASM_ALIGN "\n\t"
|
|
||||||
diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h
|
|
||||||
index 842de22..ded4299 100644
|
|
||||||
--- a/include/linux/compiler-gcc4.h
|
|
||||||
+++ b/include/linux/compiler-gcc4.h
|
|
||||||
@@ -65,6 +65,21 @@
|
|
||||||
#define __visible __attribute__((externally_visible))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+/*
|
|
||||||
+ * GCC 'asm goto' miscompiles certain code sequences:
|
|
||||||
+ *
|
|
||||||
+ * http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
|
|
||||||
+ *
|
|
||||||
+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
|
|
||||||
+ * Fixed in GCC 4.8.2 and later versions.
|
|
||||||
+ *
|
|
||||||
+ * (asm goto is automatically volatile - the naming reflects this.)
|
|
||||||
+ */
|
|
||||||
+#if GCC_VERSION <= 40801
|
|
||||||
+# define asm_volatile_goto(x...) do { asm goto(x); asm (""); } while (0)
|
|
||||||
+#else
|
|
||||||
+# define asm_volatile_goto(x...) do { asm goto(x); } while (0)
|
|
||||||
+#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
|
|
||||||
#if GCC_VERSION >= 40400
|
|
|
@ -76,7 +76,6 @@ bugfix/m68k/ethernat-kconfig.patch
|
||||||
# m68k IRQ bugfix
|
# m68k IRQ bugfix
|
||||||
bugfix/m68k/atari-irqs.patch
|
bugfix/m68k/atari-irqs.patch
|
||||||
|
|
||||||
bugfix/all/compiler-gcc-4-add-quirk-for-asm-goto-miscompilation-bug.patch
|
|
||||||
bugfix/all/crypto-ansi_cprng-Fix-off-by-one-error-in-non-block-.patch
|
bugfix/all/crypto-ansi_cprng-Fix-off-by-one-error-in-non-block-.patch
|
||||||
features/all/mvsas-Recognise-device-subsystem-9485-9485-as-88SE94.patch
|
features/all/mvsas-Recognise-device-subsystem-9485-9485-as-88SE94.patch
|
||||||
bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
|
bugfix/all/kbuild-use-nostdinc-in-compile-tests.patch
|
||||||
|
|
Loading…
Reference in New Issue