lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 17 May 2020 14:57:52 +0200 From: Ard Biesheuvel <ardb@...nel.org> To: linux-efi@...r.kernel.org, Ingo Molnar <mingo@...nel.org>, Thomas Gleixner <tglx@...utronix.de> Cc: Ard Biesheuvel <ardb@...nel.org>, linux-kernel@...r.kernel.org, Arvind Sankar <nivedita@...m.mit.edu>, Benjamin Thiel <b.thiel@...teo.de>, Borislav Petkov <bp@...en8.de>, Dave Young <dyoung@...hat.com>, Heinrich Schuchardt <xypron.glpk@....de>, Javier Martinez Canillas <javierm@...hat.com>, Jerry Snitselaar <jsnitsel@...hat.com>, Lenny Szubowicz <lszubowi@...hat.com>, linux-acpi@...r.kernel.org, Loic Yhuel <loic.yhuel@...il.com>, Matthew Garrett <mjg59@...gle.com>, Mike Lothian <mike@...eburn.co.uk>, Punit Agrawal <punit1.agrawal@...hiba.co.jp> Subject: [PATCH 5/7] x86/boot: Mark global variables as static From: Arvind Sankar <nivedita@...m.mit.edu> Mike Lothian reports that after commit 964124a97b97 ("efi/x86: Remove extra headroom for setup block") gcc 10.1.0 fails with HOSTCC arch/x86/boot/tools/build /usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/../../../../x86_64-pc-linux-gnu/bin/ld: error: linker defined: multiple definition of '_end' /usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/../../../../x86_64-pc-linux-gnu/bin/ld: /tmp/ccEkW0jM.o: previous definition here collect2: error: ld returned 1 exit status make[1]: *** [scripts/Makefile.host:103: arch/x86/boot/tools/build] Error 1 make: *** [arch/x86/Makefile:303: bzImage] Error 2 The issue is with the _end variable that was added, to hold the end of the compressed kernel from zoffsets.h (ZO__end). The name clashes with the linker-defined _end symbol that indicates the end of the build program itself. Even when there is no compile-time error, this causes build to use memory past the end of its .bss section. To solve this, mark _end as static, and for symmetry, mark the rest of the variables that keep track of symbols from the compressed kernel as static as well. Fixes: 964124a97b97 ("efi/x86: Remove extra headroom for setup block") Reported-by: Mike Lothian <mike@...eburn.co.uk> Tested-by: Mike Lothian <mike@...eburn.co.uk> Signed-off-by: Arvind Sankar <nivedita@...m.mit.edu> Link: https://lore.kernel.org/r/20200511225849.1311869-1-nivedita@alum.mit.edu Signed-off-by: Ard Biesheuvel <ardb@...nel.org> --- arch/x86/boot/tools/build.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/arch/x86/boot/tools/build.c b/arch/x86/boot/tools/build.c index 8f8c8e386cea..c8b8c1a8d1fc 100644 --- a/arch/x86/boot/tools/build.c +++ b/arch/x86/boot/tools/build.c @@ -59,14 +59,14 @@ u8 buf[SETUP_SECT_MAX*512]; #define PECOFF_COMPAT_RESERVE 0x0 #endif -unsigned long efi32_stub_entry; -unsigned long efi64_stub_entry; -unsigned long efi_pe_entry; -unsigned long efi32_pe_entry; -unsigned long kernel_info; -unsigned long startup_64; -unsigned long _ehead; -unsigned long _end; +static unsigned long efi32_stub_entry; +static unsigned long efi64_stub_entry; +static unsigned long efi_pe_entry; +static unsigned long efi32_pe_entry; +static unsigned long kernel_info; +static unsigned long startup_64; +static unsigned long _ehead; +static unsigned long _end; /*----------------------------------------------------------------------*/ -- 2.17.1
Powered by blists - more mailing lists