From: Geert Uytterhoeven <geert@linux-m68k.org>
To: Kees Cook <keescook@chromium.org>
Cc: Ingo Molnar <mingo@kernel.org>, Ard Biesheuvel <ardb@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Mark Rutland <mark.rutland@arm.com>,
Peter Collingbourne <pcc@google.com>,
James Morse <james.morse@arm.com>, Borislav Petkov <bp@suse.de>,
Ingo Molnar <mingo@redhat.com>,
Russell King <linux@armlinux.org.uk>,
Masahiro Yamada <masahiroy@kernel.org>,
Arvind Sankar <nivedita@alum.mit.edu>,
Nick Desaulniers <ndesaulniers@google.com>,
Nathan Chancellor <natechancellor@gmail.com>,
Arnd Bergmann <arnd@arndb.de>,
"the arch/x86 maintainers" <x86@kernel.org>,
clang-built-linux <clang-built-linux@googlegroups.com>,
Linux-Arch <linux-arch@vger.kernel.org>,
linux-efi <linux-efi@vger.kernel.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Linux-Renesas <linux-renesas-soc@vger.kernel.org>
Subject: Re: [PATCH v6 13/29] arm64/build: Assert for unwanted sections
Date: Mon, 26 Oct 2020 13:29:22 +0100 [thread overview]
Message-ID: <CAMuHMdUg0WJHEcq6to0-eODpXPOywLot6UD2=GFHpzoj_hCoBQ@mail.gmail.com> (raw)
In-Reply-To: <20200821194310.3089815-14-keescook@chromium.org>
Hi Kees,
On Fri, Aug 21, 2020 at 9:56 PM Kees Cook <keescook@chromium.org> wrote:
> In preparation for warning on orphan sections, discard
> unwanted non-zero-sized generated sections, and enforce other
> expected-to-be-zero-sized sections (since discarding them might hide
> problems with them suddenly gaining unexpected entries).
>
> Suggested-by: Ard Biesheuvel <ardb@kernel.org>
> Signed-off-by: Kees Cook <keescook@chromium.org>
This is now commit be2881824ae9eb92 ("arm64/build: Assert for unwanted
sections") in v5.10-rc1, and is causing the following error with
renesas_defconfig[1]:
aarch64-linux-gnu-ld: warning: orphan section `.eh_frame' from
`kernel/bpf/core.o' being placed in section `.eh_frame'
aarch64-linux-gnu-ld: Unexpected GOT/PLT entries detected!
aarch64-linux-gnu-ld: Unexpected run-time procedure linkages detected!
I cannot reproduce this with the standard arm64 defconfig.
I bisected the error to the aforementioned commit, but understand this
is not the real reason. If I revert this commit, I still get:
aarch64-linux-gnu-ld: warning: orphan section `.got.plt' from
`arch/arm64/kernel/head.o' being placed in section `.got.plt'
aarch64-linux-gnu-ld: warning: orphan section `.plt' from
`arch/arm64/kernel/head.o' being placed in section `.plt'
aarch64-linux-gnu-ld: warning: orphan section `.data.rel.ro' from
`arch/arm64/kernel/head.o' being placed in section `.data.rel.ro'
aarch64-linux-gnu-ld: warning: orphan section `.eh_frame' from
`kernel/bpf/core.o' being placed in section `.eh_frame'
I.e. including the ".eh_frame" warning. I have tried bisecting that
warning (i.e. with be2881824ae9eb92 reverted), but that leads me to
commit b3e5d80d0c48c0cc ("arm64/build: Warn on orphan section
placement"), which is another red herring.
Note that even on plain be2881824ae9eb92, I get:
aarch64-linux-gnu-ld: Unexpected GOT/PLT entries detected!
aarch64-linux-gnu-ld: Unexpected run-time procedure linkages detected!
The parent commit obviously doesn't show that (but probably still has
the problem).
Do you have a clue!
Thanks!
> --- a/arch/arm64/kernel/vmlinux.lds.S
> +++ b/arch/arm64/kernel/vmlinux.lds.S
> @@ -121,6 +121,14 @@ SECTIONS
> *(.got) /* Global offset table */
> }
>
> + /*
> + * Make sure that the .got.plt is either completely empty or it
> + * contains only the lazy dispatch entries.
> + */
> + .got.plt : { *(.got.plt) }
> + ASSERT(SIZEOF(.got.plt) == 0 || SIZEOF(.got.plt) == 0x18,
> + "Unexpected GOT/PLT entries detected!")
> +
> . = ALIGN(SEGMENT_ALIGN);
> _etext = .; /* End of text section */
>
> @@ -243,6 +251,18 @@ SECTIONS
> ELF_DETAILS
>
> HEAD_SYMBOLS
> +
> + /*
> + * Sections that should stay zero sized, which is safer to
> + * explicitly check instead of blindly discarding.
> + */
> + .plt : {
> + *(.plt) *(.plt.*) *(.iplt) *(.igot)
> + }
> + ASSERT(SIZEOF(.plt) == 0, "Unexpected run-time procedure linkages detected!")
> +
> + .data.rel.ro : { *(.data.rel.ro) }
> + ASSERT(SIZEOF(.data.rel.ro) == 0, "Unexpected RELRO detected!")
> }
>
> #include "image-vars.h"
[1] https://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git/log/?h=topic/renesas-defconfig
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
next prev parent reply other threads:[~2020-10-26 12:29 UTC|newest]
Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-21 19:42 [PATCH v6 00/29] Warn on orphan section placement Kees Cook
2020-08-21 19:42 ` [PATCH v6 01/29] vmlinux.lds.h: Create COMMON_DISCARDS Kees Cook
2020-09-01 11:48 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 02/29] vmlinux.lds.h: Add .gnu.version* to COMMON_DISCARDS Kees Cook
2020-09-01 11:48 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 03/29] vmlinux.lds.h: Avoid KASAN and KCSAN's unwanted sections Kees Cook
2020-09-01 11:48 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 04/29] vmlinux.lds.h: Split ELF_DETAILS from STABS_DEBUG Kees Cook
2020-09-01 11:48 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 05/29] vmlinux.lds.h: Add .symtab, .strtab, and .shstrtab to ELF_DETAILS Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 06/29] vmlinux.lds.h: add PGO and AutoFDO input sections Kees Cook
2020-09-01 11:47 ` [tip: core/build] vmlinux.lds.h: Add " tip-bot2 for Nick Desaulniers
2020-08-21 19:42 ` [PATCH v6 07/29] efi/libstub: Disable -mbranch-protection Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 08/29] arm64/mm: Remove needless section quotes Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 09/29] arm64/kernel: Remove needless Call Frame Information annotations Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 10/29] arm64/build: Remove .eh_frame* sections due to unwind tables Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 11/29] arm64/build: Use common DISCARDS in linker script Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 12/29] arm64/build: Add missing DWARF sections Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 13/29] arm64/build: Assert for unwanted sections Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-10-26 12:29 ` Geert Uytterhoeven [this message]
2020-10-26 13:29 ` [PATCH v6 13/29] " Geert Uytterhoeven
2020-10-26 16:01 ` Geert Uytterhoeven
2020-10-26 17:38 ` Ard Biesheuvel
2020-10-26 17:43 ` Geert Uytterhoeven
2020-10-26 17:48 ` Nick Desaulniers
2020-10-26 17:53 ` Geert Uytterhoeven
2020-10-27 8:37 ` Geert Uytterhoeven
2020-10-27 19:25 ` Geert Uytterhoeven
2020-10-27 19:33 ` Ard Biesheuvel
2020-10-27 20:00 ` Arvind Sankar
2020-10-27 20:12 ` Nick Desaulniers
2020-10-27 20:15 ` Ard Biesheuvel
2020-10-27 20:17 ` Nick Desaulniers
2020-10-27 20:30 ` Arvind Sankar
2020-10-27 20:40 ` Nick Desaulniers
2020-10-27 21:24 ` Arvind Sankar
2020-10-27 20:28 ` Nick Desaulniers
2020-10-27 20:32 ` Arvind Sankar
2020-10-27 20:36 ` Nick Desaulniers
2020-10-28 21:36 ` Alexei Starovoitov
2020-10-27 8:51 ` Geert Uytterhoeven
2020-10-27 10:08 ` Jean-Philippe Brucker
2020-10-27 10:20 ` Geert Uytterhoeven
2020-10-27 11:29 ` Ard Biesheuvel
2020-10-27 11:53 ` Naresh Kamboju
2020-10-27 13:56 ` Ard Biesheuvel
2020-08-21 19:42 ` [PATCH v6 14/29] arm64/build: Warn on orphan section placement Kees Cook
2020-08-21 19:42 ` [PATCH v6 15/29] arm/build: Refactor linker script headers Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 16/29] arm/build: Explicitly keep .ARM.attributes sections Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 17/29] arm/build: Add missing sections Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:42 ` [PATCH v6 18/29] arm/build: Assert for unwanted sections Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:43 ` [PATCH v6 19/29] arm/build: Warn on orphan section placement Kees Cook
2020-08-21 19:43 ` [PATCH v6 20/29] arm/boot: Handle all sections explicitly Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:43 ` [PATCH v6 21/29] arm/boot: Warn on orphan section placement Kees Cook
2020-08-21 19:43 ` [PATCH v6 22/29] x86/asm: Avoid generating unused kprobe sections Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:43 ` [PATCH v6 23/29] x86/build: Enforce an empty .got.plt section Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:43 ` [PATCH v6 24/29] x86/build: Assert for unwanted sections Kees Cook
2020-09-01 11:47 ` [tip: core/build] x86/build: Add asserts " tip-bot2 for Kees Cook
2020-08-21 19:43 ` [PATCH v6 25/29] x86/build: Warn on orphan section placement Kees Cook
2020-08-21 19:43 ` [PATCH v6 26/29] x86/boot/compressed: Reorganize zero-size section asserts Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:43 ` [PATCH v6 27/29] x86/boot/compressed: Remove, discard, or assert for unwanted sections Kees Cook
2020-08-21 20:01 ` Arvind Sankar
2020-08-21 21:21 ` Kees Cook
2020-08-21 21:28 ` Arvind Sankar
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:43 ` [PATCH v6 28/29] x86/boot/compressed: Add missing debugging sections to output Kees Cook
2020-09-01 11:47 ` [tip: core/build] " tip-bot2 for Kees Cook
2020-08-21 19:43 ` [PATCH v6 29/29] x86/boot/compressed: Warn on orphan section placement Kees Cook
2020-08-31 19:41 ` [PATCH v6 00/29] " Kees Cook
2020-09-01 7:11 ` Ingo Molnar
2020-09-01 7:59 ` Ingo Molnar
2020-09-01 8:16 ` Ingo Molnar
2020-09-01 15:17 ` Kees Cook
2020-09-01 18:02 ` Nick Desaulniers
2020-09-01 23:18 ` Kees Cook
2020-09-01 23:54 ` Nick Desaulniers
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='CAMuHMdUg0WJHEcq6to0-eODpXPOywLot6UD2=GFHpzoj_hCoBQ@mail.gmail.com' \
--to=geert@linux-m68k.org \
--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=linux-renesas-soc@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=mark.rutland@arm.com \
--cc=masahiroy@kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=natechancellor@gmail.com \
--cc=ndesaulniers@google.com \
--cc=nivedita@alum.mit.edu \
--cc=pcc@google.com \
--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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).