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
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 15 Jul 2020 10:55:32 +0200
From:   Sedat Dilek <sedat.dilek@...il.com>
To:     Arvind Sankar <nivedita@...m.mit.edu>
Cc:     Thomas Gleixner <tglx@...utronix.de>,
        Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
        "H. Peter Anvin" <hpa@...or.com>, x86@...nel.org,
        Nick Desaulniers <ndesaulniers@...gle.com>,
        Fangrui Song <maskray@...gle.com>,
        Dmitry Golovin <dima@...ovin.in>,
        Clang-Built-Linux ML <clang-built-linux@...glegroups.com>,
        Ard Biesheuvel <ardb@...nel.org>,
        Masahiro Yamada <masahiroy@...nel.org>,
        Daniel Kiper <daniel.kiper@...cle.com>,
        Kees Cook <keescook@...omium.org>,
        Nathan Chancellor <natechancellor@...il.com>,
        Arnd Bergmann <arnd@...db.de>,
        "H . J . Lu" <hjl@...rceware.org>, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v5 4/7] x86/boot: Add .text.* to setup.ld

On Wed, Jul 15, 2020 at 2:41 AM Arvind Sankar <nivedita@...m.mit.edu> wrote:
>
> gcc puts the main function into .text.startup when compiled with -Os (or
> -O2). This results in arch/x86/boot/main.c having a .text.startup
> section which is currently not included explicitly in the linker script
> setup.ld in the same directory.
>
> The BFD linker places this orphan section immediately after .text, so
> this still works. However, LLD git, since [1], is choosing to place it
> immediately after the .bstext section instead (this is the first code
> section). This plays havoc with the section layout that setup.elf
> requires to create the setup header, for eg on 64-bit:
>
>     LD      arch/x86/boot/setup.elf
>   ld.lld: error: section .text.startup file range overlaps with .header
>   >>> .text.startup range is [0x200040, 0x2001FE]
>   >>> .header range is [0x2001EF, 0x20026B]
>
>   ld.lld: error: section .header file range overlaps with .bsdata
>   >>> .header range is [0x2001EF, 0x20026B]
>   >>> .bsdata range is [0x2001FF, 0x200398]
>
>   ld.lld: error: section .bsdata file range overlaps with .entrytext
>   >>> .bsdata range is [0x2001FF, 0x200398]
>   >>> .entrytext range is [0x20026C, 0x2002D3]
>
>   ld.lld: error: section .text.startup virtual address range overlaps
>   with .header
>   >>> .text.startup range is [0x40, 0x1FE]
>   >>> .header range is [0x1EF, 0x26B]
>
>   ld.lld: error: section .header virtual address range overlaps with
>   .bsdata
>   >>> .header range is [0x1EF, 0x26B]
>   >>> .bsdata range is [0x1FF, 0x398]
>
>   ld.lld: error: section .bsdata virtual address range overlaps with
>   .entrytext
>   >>> .bsdata range is [0x1FF, 0x398]
>   >>> .entrytext range is [0x26C, 0x2D3]
>
>   ld.lld: error: section .text.startup load address range overlaps with
>   .header
>   >>> .text.startup range is [0x40, 0x1FE]
>   >>> .header range is [0x1EF, 0x26B]
>
>   ld.lld: error: section .header load address range overlaps with
>   .bsdata
>   >>> .header range is [0x1EF, 0x26B]
>   >>> .bsdata range is [0x1FF, 0x398]
>
>   ld.lld: error: section .bsdata load address range overlaps with
>   .entrytext
>   >>> .bsdata range is [0x1FF, 0x398]
>   >>> .entrytext range is [0x26C, 0x2D3]
>
> Add .text.* to the .text output section to fix this, and also prevent
> any future surprises if the compiler decides to create other such
> sections.
>
> [1] https://reviews.llvm.org/D75225
>
> Reviewed-by: Kees Cook <keescook@...omium.org>
> Reviewed-by: Ard Biesheuvel <ardb@...nel.org>
> Reviewed-by: Fangrui Song <maskray@...gle.com>
> Signed-off-by: Arvind Sankar <nivedita@...m.mit.edu>

Tested-by: Sedat Dilek <sedat.dilek@...il.com>

- Sedat -

> ---
>  arch/x86/boot/setup.ld | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/x86/boot/setup.ld b/arch/x86/boot/setup.ld
> index 24c95522f231..49546c247ae2 100644
> --- a/arch/x86/boot/setup.ld
> +++ b/arch/x86/boot/setup.ld
> @@ -20,7 +20,7 @@ SECTIONS
>         .initdata       : { *(.initdata) }
>         __end_init = .;
>
> -       .text           : { *(.text) }
> +       .text           : { *(.text .text.*) }
>         .text32         : { *(.text32) }
>
>         . = ALIGN(16);
> --
> 2.26.2
>
> --
> You received this message because you are subscribed to the Google Groups "Clang Built Linux" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@...glegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20200715004133.1430068-5-nivedita%40alum.mit.edu.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ