Messages in this thread Patch in this message | | | From | Borislav Petkov <> | Subject | [PATCH] x86/head_32: Fix overflow warning with 32-bit binutils | Date | Fri, 19 Jun 2015 09:51:35 +0200 |
| |
From: Borislav Petkov <bp@suse.de>
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.
Reported-and-tested-by: Enrico Mioso <mrkiko.rs@gmail.com> Suggested-by: Michael Matz <matz@suse.de> Signed-off-by: Borislav Petkov <bp@suse.de> --- arch/x86/kernel/head_32.S | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/x86/kernel/head_32.S b/arch/x86/kernel/head_32.S index 53eeb226657c..c601d1de5ae5 100644 --- a/arch/x86/kernel/head_32.S +++ b/arch/x86/kernel/head_32.S @@ -63,8 +63,8 @@ #endif /* Number of possible pages in the lowmem region */ -LOWMEM_PAGES = (((1<<32) - __PAGE_OFFSET) >> PAGE_SHIFT) - +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.3.5
| |