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:   Sat, 22 Feb 2020 15:17:16 -0500
From:   Arvind Sankar <nivedita@...m.mit.edu>
To:     Fangrui Song <maskray@...gle.com>
Cc:     Arvind Sankar <nivedita@...m.mit.edu>,
        Borislav Petkov <bp@...en8.de>,
        Nathan Chancellor <natechancellor@...il.com>,
        Thomas Gleixner <tglx@...utronix.de>,
        Ingo Molnar <mingo@...hat.com>,
        "H. Peter Anvin" <hpa@...or.com>, x86@...nel.org,
        linux-kernel@...r.kernel.org, clang-built-linux@...glegroups.com,
        Michael Matz <matz@...e.de>
Subject: Re: [PATCH] x86/boot/compressed: Fix compressed kernel linking with
 lld

On Sat, Feb 22, 2020 at 10:58:06AM -0800, Fangrui Song wrote:
> On 2020-02-22, Nathan Chancellor wrote:
> >On Sat, Feb 22, 2020 at 12:18:59PM -0500, Arvind Sankar wrote:
> >> Commit TBD ("x86/boot/compressed: Remove unnecessary sections from
> >> bzImage") discarded unnecessary sections with *(*). While this works
> >> fine with the bfd linker, lld tries to also discard essential sections
> >> like .shstrtab, .symtab and .strtab, which results in the link failing
> >> since .shstrtab is required by the ELF specification. .symtab and
> >> .strtab are also necessary to generate the zoffset.h file for the
> >> bzImage header.
> >>
> >> Since the only sizeable section that can be discarded is .eh_frame,
> >> restrict the discard to only .eh_frame to be safe.
> >>
> >> Signed-off-by: Arvind Sankar <nivedita@...m.mit.edu>
> >> ---
> >> Sending as a fix on top of tip/x86/boot.
> >>
> >>  arch/x86/boot/compressed/vmlinux.lds.S | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/arch/x86/boot/compressed/vmlinux.lds.S b/arch/x86/boot/compressed/vmlinux.lds.S
> >> index 12a20603d92e..469dcf800a2c 100644
> >> --- a/arch/x86/boot/compressed/vmlinux.lds.S
> >> +++ b/arch/x86/boot/compressed/vmlinux.lds.S
> >> @@ -74,8 +74,8 @@ SECTIONS
> >>  	. = ALIGN(PAGE_SIZE);	/* keep ZO size page aligned */
> >>  	_end = .;
> >>
> >> -	/* Discard all remaining sections */
> >> +	/* Discard .eh_frame to save some space */
> >>  	/DISCARD/ : {
> >> -		*(*)
> >> +		*(.eh_frame)
> >>  	}
> >>  }
> >> --
> >> 2.24.1
> >>
> >
> >FWIW:
> >
> >Tested-by: Nathan Chancellor <natechancellor@...il.com>
> 
> I am puzzled. Doesn't -fno-asynchronous-unwind-tables suppress
> .eh_frame in the object files? Why are there still .eh_frame?
> 
> Though, there is prior art: arch/s390/boot/compressed/vmlinux.lds.S also discards .eh_frame

The compressed kernel doesn't use the regular flags and it seems it
doesn't have that option. Maybe we should add it in to avoid generating
those in the first place.

The .eh_frame discard in arch/x86/kernel/vmlinux.lds.S does seem
superfluous though.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ