[PATCH v6 0/7] x86/boot: Remove run-time relocations from compressed kernel

From: Arvind Sankar
Date: Fri Jul 31 2020 - 16:27:42 EST


Changes from v5:
- Rebase onto v5.8-rc7 to resolve Makefile conflict

v5: https://lore.kernel.org/lkml/20200715004133.1430068-1-nivedita@xxxxxxxxxxxx/

Changes from v4:
- Move -pie --no-dynamic-linker from KBUILD_LDFLAGS to LDFLAGS_vmlinux
Sedat: I'm not clear on whether you tested with the final LDFLAGS,
could you confirm: i.e. if you tested with -pie passed to LLD?
- Replace runtime -> run-time to be consistent in wording

Changes from v3:
- Move hidden.h to include/linux so the EFI stub and the compressed
kernel can share the same file

Changes from v2:
- Incorporate Ard's patches for eliminating GOT references into this
series
- Rebase on v5.8-rc3

Changes from v1:
- Add .text.* to setup.ld instead of just .text.startup
- Rename the la() macro introduced in the second patch for 64-bit to
rva(), and rework the explanatory comment.
- In the last patch, check both .rel.dyn and .rela.dyn, instead of just
one per arch.

Ard Biesheuvel (3):
x86/boot/compressed: Move .got.plt entries out of the .got section
x86/boot/compressed: Force hidden visibility for all symbol references
x86/boot/compressed: Get rid of GOT fixup code

Arvind Sankar (4):
x86/boot: Add .text.* to setup.ld
x86/boot: Remove run-time relocations from .head.text code
x86/boot: Remove run-time relocations from head_{32,64}.S
x86/boot: Check that there are no run-time relocations

arch/x86/boot/compressed/Makefile | 39 +-----
arch/x86/boot/compressed/head_32.S | 99 +++++----------
arch/x86/boot/compressed/head_64.S | 165 ++++++++++---------------
arch/x86/boot/compressed/mkpiggy.c | 6 +
arch/x86/boot/compressed/vmlinux.lds.S | 24 +++-
arch/x86/boot/setup.ld | 2 +-
drivers/firmware/efi/libstub/Makefile | 2 +-
drivers/firmware/efi/libstub/hidden.h | 6 -
include/linux/hidden.h | 19 +++
9 files changed, 153 insertions(+), 209 deletions(-)
delete mode 100644 drivers/firmware/efi/libstub/hidden.h
create mode 100644 include/linux/hidden.h


base-commit: 92ed301919932f777713b9172e525674157e983d
--
2.26.2