Linux-EFI Archive on lore.kernel.org
 help / color / Atom feed
From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Arvind Sankar <nivedita@alum.mit.edu>
Cc: Kees Cook <keescook@chromium.org>, Will Deacon <will@kernel.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Ard Biesheuvel <ardb@kernel.org>,
	Peter Collingbourne <pcc@google.com>,
	James Morse <james.morse@arm.com>, Borislav Petkov <bp@suse.de>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@redhat.com>,
	Masahiro Yamada <masahiroy@kernel.org>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Nathan Chancellor <natechancellor@gmail.com>,
	Arnd Bergmann <arnd@arndb.de>,
	x86@kernel.org, clang-built-linux@googlegroups.com,
	linux-arch@vger.kernel.org, linux-efi@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v4 14/17] arm/build: Warn on orphan section placement
Date: Mon, 29 Jun 2020 20:03:16 +0100
Message-ID: <20200629190316.GY1551@shell.armlinux.org.uk> (raw)
In-Reply-To: <20200629181514.GA1046442@rani.riverdale.lan>

On Mon, Jun 29, 2020 at 02:15:14PM -0400, Arvind Sankar wrote:
> On Mon, Jun 29, 2020 at 07:07:04PM +0100, Russell King - ARM Linux admin wrote:
> > On Mon, Jun 29, 2020 at 11:54:01AM -0400, Arvind Sankar wrote:
> > > On Sun, Jun 28, 2020 at 11:18:37PM -0700, Kees Cook wrote:
> > > > We don't want to depend on the linker's orphan section placement
> > > > heuristics as these can vary between linkers, and may change between
> > > > versions. All sections need to be explicitly named in the linker
> > > > script.
> > > > 
> > > > Specifically, this would have made a recently fixed bug very obvious:
> > > > 
> > > > ld: warning: orphan section `.fixup' from `arch/arm/lib/copy_from_user.o' being placed in section `.fixup'
> > > > 
> > > > Discard unneeded sections .iplt, .rel.iplt, .igot.plt, and .modinfo.
> > > > 
> > > > Add missing text stub sections .vfp11_veneer and .v4_bx.
> > > > 
> > > > Add debug sections explicitly.
> > > > 
> > > > Finally enable orphan section warning.
> > > 
> > > This is unrelated to this patch as such, but I noticed that ARM32/64 places
> > > the .got section inside .text -- is that expected on ARM?
> > 
> > Do you mean in general, in the kernel vmlinux, in the decompressor
> > vmlinux or ... ?
> > 
> 
> Sorry, in the kernel vmlinux. ARM_TEXT includes *(.got) for 32-bit, and
> the 64-bit vmlinux.lds.S includes it in .text as well. The decompressor
> for 32-bit keeps it separate for non-EFI stub kernel and puts it inside
> .data for EFI stub.

The main 32-bit kernel image doesn't use the .got - I don't think it
actually even exists.

The decompressor (non-EFI) uses the .got as a way of getting position
independence, and that must be part of the binary image at a fixed
offset from the .text section.  The decompressor self-fixes up the
GOT entries.

In the case of the decompressor being flashed and executed from NOR
flash, the decompressor must be built for the specific address(es)
that it will reside (which does away with the .got table.)

For EFI, it needs to be in the .data section (which is in that case
always a fixed offset from .text) so that it can be written to so the
fix-ups work.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

  reply index

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-29  6:18 [PATCH v4 00/17] " Kees Cook
2020-06-29  6:18 ` [PATCH v4 01/17] vmlinux.lds.h: Add .gnu.version* to DISCARDS Kees Cook
2020-06-29  6:18 ` [PATCH v4 02/17] vmlinux.lds.h: Avoid KASAN and KCSAN's unwanted sections Kees Cook
2020-06-29  6:18 ` [PATCH v4 03/17] vmlinux.lds.h: Split ELF_DETAILS from STABS_DEBUG Kees Cook
2020-06-29  6:18 ` [PATCH v4 04/17] vmlinux.lds.h: Add .symtab, .strtab, and .shstrtab to ELF_DETAILS Kees Cook
2020-06-29  6:18 ` [PATCH v4 05/17] ctype: Work around Clang -mbranch-protection=none bug Kees Cook
2020-06-29  8:15   ` Ard Biesheuvel
2020-06-29 14:43     ` Kees Cook
2020-06-29 15:06     ` Kees Cook
2020-06-29 15:08       ` Ard Biesheuvel
2020-06-29 15:16         ` Kees Cook
2020-06-29 18:02       ` Nick Desaulniers
2020-06-29 18:37         ` Kees Cook
2020-06-29  6:18 ` [PATCH v4 06/17] efi/libstub: Disable -mbranch-protection Kees Cook
2020-06-29  6:18 ` [PATCH v4 07/17] arm64/build: Use common DISCARDS in linker script Kees Cook
2020-06-29  6:18 ` [PATCH v4 08/17] arm64/mm: Remove needless section quotes Kees Cook
2020-06-29 19:53   ` Nick Desaulniers
2020-06-29 20:03     ` Joe Perches
2020-06-29 20:29       ` Nick Desaulniers
2020-06-29 20:04     ` Kees Cook
2020-06-29 20:54       ` Arvind Sankar
2020-06-29 21:06         ` Arvind Sankar
2020-06-29  6:18 ` [PATCH v4 09/17] arm64/build: Remove .eh_frame* sections due to unwind tables Kees Cook
2020-06-29  6:18 ` [PATCH v4 10/17] arm64/kernel: Remove needless Call Frame Information annotations Kees Cook
2020-06-29  6:18 ` [PATCH v4 11/17] arm64/build: Warn on orphan section placement Kees Cook
2020-06-29  6:18 ` [PATCH v4 12/17] arm/build: Refactor linker script headers Kees Cook
2020-06-29  6:18 ` [PATCH v4 13/17] arm/build: Explicitly keep .ARM.attributes sections Kees Cook
2020-06-29  6:18 ` [PATCH v4 14/17] arm/build: Warn on orphan section placement Kees Cook
2020-06-29 15:54   ` Arvind Sankar
2020-06-29 18:07     ` Russell King - ARM Linux admin
2020-06-29 18:15       ` Arvind Sankar
2020-06-29 19:03         ` Russell King - ARM Linux admin [this message]
2020-06-29 19:47   ` Nick Desaulniers
2020-06-29  6:18 ` [PATCH v4 15/17] arm/boot: " Kees Cook
2020-06-29  6:18 ` [PATCH v4 16/17] x86/build: " Kees Cook
2020-06-29  6:18 ` [PATCH v4 17/17] x86/boot: " Kees Cook

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200629190316.GY1551@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=ardb@kernel.org \
    --cc=arnd@arndb.de \
    --cc=bp@suse.de \
    --cc=catalin.marinas@arm.com \
    --cc=clang-built-linux@googlegroups.com \
    --cc=james.morse@arm.com \
    --cc=keescook@chromium.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=masahiroy@kernel.org \
    --cc=mingo@redhat.com \
    --cc=natechancellor@gmail.com \
    --cc=ndesaulniers@google.com \
    --cc=nivedita@alum.mit.edu \
    --cc=pcc@google.com \
    --cc=tglx@linutronix.de \
    --cc=will@kernel.org \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-EFI Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-efi/0 linux-efi/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-efi linux-efi/ https://lore.kernel.org/linux-efi \
		linux-efi@vger.kernel.org
	public-inbox-index linux-efi

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-efi


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git