From 6b5bfa2bc544ed79ca3ff24fd32f981e9272d0fa Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 24 Jun 2015 07:56:30 -0700 Subject: [PATCH] 4.1-stable patches added patches: x86-boot-fix-overflow-warning-with-32-bit-binutils.patch --- queue-4.1/series | 1 + ...verflow-warning-with-32-bit-binutils.patch | 58 +++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 queue-4.1/series create mode 100644 queue-4.1/x86-boot-fix-overflow-warning-with-32-bit-binutils.patch diff --git a/queue-4.1/series b/queue-4.1/series new file mode 100644 index 00000000000..9fc8b70ffbb --- /dev/null +++ b/queue-4.1/series @@ -0,0 +1 @@ +x86-boot-fix-overflow-warning-with-32-bit-binutils.patch diff --git a/queue-4.1/x86-boot-fix-overflow-warning-with-32-bit-binutils.patch b/queue-4.1/x86-boot-fix-overflow-warning-with-32-bit-binutils.patch new file mode 100644 index 00000000000..6b7f4f1fed5 --- /dev/null +++ b/queue-4.1/x86-boot-fix-overflow-warning-with-32-bit-binutils.patch @@ -0,0 +1,58 @@ +From 04c17341b42699a5859a8afa05e64ba08a4e5235 Mon Sep 17 00:00:00 2001 +From: Borislav Petkov +Date: Fri, 19 Jun 2015 13:49:06 +0200 +Subject: x86/boot: Fix overflow warning with 32-bit binutils + +From: Borislav Petkov + +commit 04c17341b42699a5859a8afa05e64ba08a4e5235 upstream. + +When building the kernel with 32-bit binutils built with support +only for the i386 target, we get the following warning: + + arch/x86/kernel/head_32.S:66: Warning: shift count out of range (32 is not between 0 and 31) + +The problem is that in that case, binutils' internal type +representation is 32-bit wide and the shift range overflows. + +In order to fix this, manipulate the shift expression which +creates the 4GiB constant to not overflow the shift count. + +Suggested-by: Michael Matz +Reported-and-tested-by: Enrico Mioso +Signed-off-by: Borislav Petkov +Cc: Andrew Morton +Cc: Borislav Petkov +Cc: H. Peter Anvin +Cc: Linus Torvalds +Cc: Peter Zijlstra +Cc: Thomas Gleixner +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kernel/head_32.S | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +--- a/arch/x86/kernel/head_32.S ++++ b/arch/x86/kernel/head_32.S +@@ -62,9 +62,16 @@ + #define PAGE_TABLE_SIZE(pages) ((pages) / PTRS_PER_PGD) + #endif + +-/* Number of possible pages in the lowmem region */ +-LOWMEM_PAGES = (((1<<32) - __PAGE_OFFSET) >> PAGE_SHIFT) +- ++/* ++ * Number of possible pages in the lowmem region. ++ * ++ * We shift 2 by 31 instead of 1 by 32 to the left in order to avoid a ++ * gas warning about overflowing shift count when gas has been compiled ++ * with only a host target support using a 32-bit type for internal ++ * representation. ++ */ ++LOWMEM_PAGES = (((2<<31) - __PAGE_OFFSET) >> PAGE_SHIFT) ++ + /* Enough space to fit pagetables for the low memory linear map */ + MAPPING_BEYOND_END = PAGE_TABLE_SIZE(LOWMEM_PAGES) << PAGE_SHIFT + -- 2.47.3