linux-s390.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/24] vdso: Reject absolute relocations during build
@ 2025-08-12  5:44 Thomas Weißschuh
  2025-08-12  5:44 ` [PATCH v4 01/24] elf, uapi: Add a header for relocation constants Thomas Weißschuh
                   ` (25 more replies)
  0 siblings, 26 replies; 32+ messages in thread
From: Thomas Weißschuh @ 2025-08-12  5:44 UTC (permalink / raw)
  To: Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti,
	Nathan Chancellor, Nick Desaulniers, Bill Wendling, Justin Stitt,
	Andy Lutomirski, Thomas Gleixner, Vincenzo Frascino, Kees Cook,
	Ingo Molnar, Borislav Petkov, Dave Hansen, x86, H. Peter Anvin,
	Richard Weinberger, Anton Ivanov, Johannes Berg, Russell King,
	Catalin Marinas, Will Deacon, Madhavan Srinivasan,
	Michael Ellerman, Nicholas Piggin, Christophe Leroy, Huacai Chen,
	WANG Xuerui, Heiko Carstens, Vasily Gorbik, Alexander Gordeev,
	Christian Borntraeger, Sven Schnelle, Thomas Bogendoerfer,
	Miguel Ojeda, Alex Gaynor, Boqun Feng, Gary Guo,
	Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
	Trevor Gross, Danilo Krummrich, Nicolas Schier
  Cc: linux-riscv, linux-kernel, llvm, linux-mm, linux-um,
	linux-arm-kernel, linuxppc-dev, loongarch, linux-s390, linux-mips,
	rust-for-linux, linux-kbuild, Jan Stancek,
	Arnaldo Carvalho de Melo, Alexandre Ghiti, Thomas Weißschuh

The compiler can emit absolute relocations in vDSO code,
which are invalid in vDSO code.
Detect them at compile-time.

libc elf.h is missing some of the relocation constants,
so make user of the kernels own UAPI headers instead.

Kbuild and Rust folks: This contains custom definitions of hostprog
bindgen and rust library commands.
These are currently only defined inside the subsystem directory.
Let me know if they should go into scripts/Makefile.host.

This will conflict with my SPARC64 generic vDSO patches [0].
If both end up being applied at the same time, please leave out commit 
'vdso/vdsocheck: Drop the transitional kconfig option' from this series.

[0] https://lore.kernel.org/lkml/20250724-vdso-sparc64-generic-2-v1-0-e376a3bd24d1@linutronix.de/

Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
---
Changes in v4:
- Replace the inline shell logic with a dedicated build-time tool
- Link to v3: https://lore.kernel.org/r/20250611-vdso-absolute-reloc-v3-0-47897d73784b@linutronix.de

Changes in v3:
- Drop already applied bugfix for arm64
- Disable LTO for the riscv vDSO, as it is incompatible
- Link to v2: https://lore.kernel.org/r/20250430-vdso-absolute-reloc-v2-0-5efcc3bc4b26@linutronix.de

Changes in v2:
- Link to openend (invalid) GCC bug containing more explanations
- Refine commit messages
- Don't fail on commit absolute relocations in debug info
- Link to v1: https://lore.kernel.org/r/20250429-vdso-absolute-reloc-v1-0-987a0afd10b5@linutronix.de

---
Thomas Weißschuh (24):
      elf, uapi: Add a header for relocation constants
      x86/elf, um/x86/elf: Move relocation constants to UAPI
      ARM: elf: Move relocation constants to UAPI
      arm64: elf: Move relocation constants to UAPI
      powerpc/elf: Move relocation constants to UAPI
      riscv: elf: Move relocation constants to UAPI
      LoongArch: Move relocation constants to UAPI
      s390/elf: Move relocation constants to UAPI
      MIPS: ELF: Move relocation constants to UAPI
      tools headers UAPI: Sync ELF headers with the kernel sources
      vdso: Add the vdsocheck tool
      x86/vdso: Enable the vdsocheck tool
      ARM: vdso: Enable the vdsocheck tool
      arm64: vdso: Enable the vdsocheck tool
      powerpc/elf: Add 32-bit REL16 relocation definitions
      powerpc/vdso: Enable the vdsocheck tool
      riscv: vdso: Deduplicate CFLAGS_REMOVE_* variables
      riscv: vdso: Disable LTO for the vDSO
      riscv: vdso: Enable the vdsocheck tool
      LoongArch: vDSO: Enable the vdsocheck tool
      s390/vdso: Enable the vdsocheck tool
      MIPS: ELF: Add more PC-relative relocation definitions
      MIPS: vdso: Enable the vdsocheck tool
      vdso/vdsocheck: Drop the transitional kconfig option

 arch/arm/include/asm/elf.h          |  24 --
 arch/arm/vdso/Makefile              |   4 +-
 arch/arm64/include/asm/elf.h        |  55 ----
 arch/arm64/kernel/vdso/Makefile     |   4 +-
 arch/loongarch/include/asm/elf.h    | 100 ------
 arch/loongarch/vdso/Makefile        |   4 +-
 arch/mips/include/asm/elf.h         |  53 ---
 arch/mips/vdso/Makefile             |   8 +-
 arch/powerpc/include/uapi/asm/elf.h | 201 ------------
 arch/powerpc/kernel/vdso/Makefile   |   4 +-
 arch/riscv/include/uapi/asm/elf.h   |  66 ----
 arch/riscv/kernel/vdso/Makefile     |  11 +-
 arch/s390/include/asm/elf.h         |  83 -----
 arch/s390/kernel/vdso32/Makefile    |   4 +-
 arch/s390/kernel/vdso64/Makefile    |   4 +-
 arch/x86/entry/vdso/Makefile        |   6 +-
 arch/x86/include/asm/elf.h          |  34 --
 arch/x86/um/asm/elf.h               |  33 --
 include/uapi/linux/elf-r.h          | 631 ++++++++++++++++++++++++++++++++++++
 include/uapi/linux/elf.h            |   1 +
 lib/vdso/Makefile                   |   2 +
 lib/vdso/Makefile.include           |  17 +
 lib/vdso/check/.gitignore           |   3 +
 lib/vdso/check/Makefile             |  28 ++
 lib/vdso/check/elf.rs               | 488 ++++++++++++++++++++++++++++
 lib/vdso/check/vdsocheck.rs         | 279 ++++++++++++++++
 tools/include/uapi/linux/elf-em.h   |  71 ++++
 tools/include/uapi/linux/elf-r.h    | 631 ++++++++++++++++++++++++++++++++++++
 tools/include/uapi/linux/elf.h      | 112 ++++++-
 29 files changed, 2277 insertions(+), 684 deletions(-)
---
base-commit: 5180c6526acc9f1cb58f8b11fba67583c22e0854
change-id: 20250428-vdso-absolute-reloc-a226293c1761

Best regards,
-- 
Thomas Weißschuh <thomas.weissschuh@linutronix.de>


^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2025-08-15 15:07 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-12  5:44 [PATCH v4 00/24] vdso: Reject absolute relocations during build Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 01/24] elf, uapi: Add a header for relocation constants Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 02/24] x86/elf, um/x86/elf: Move relocation constants to UAPI Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 03/24] ARM: elf: " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 04/24] arm64: " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 05/24] powerpc/elf: " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 06/24] riscv: elf: " Thomas Weißschuh
2025-08-15 15:05   ` Palmer Dabbelt
2025-08-12  5:44 ` [PATCH v4 07/24] LoongArch: " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 08/24] s390/elf: " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 09/24] MIPS: ELF: " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 10/24] tools headers UAPI: Sync ELF headers with the kernel sources Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 11/24] vdso: Add the vdsocheck tool Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 12/24] x86/vdso: Enable " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 13/24] ARM: vdso: " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 14/24] arm64: " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 15/24] powerpc/elf: Add 32-bit REL16 relocation definitions Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 16/24] powerpc/vdso: Enable the vdsocheck tool Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 17/24] riscv: vdso: Deduplicate CFLAGS_REMOVE_* variables Thomas Weißschuh
2025-08-15 15:07   ` Palmer Dabbelt
2025-08-12  5:44 ` [PATCH v4 18/24] riscv: vdso: Disable LTO for the vDSO Thomas Weißschuh
2025-08-15 15:07   ` Palmer Dabbelt
2025-08-12  5:44 ` [PATCH v4 19/24] riscv: vdso: Enable the vdsocheck tool Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 20/24] LoongArch: vDSO: " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 21/24] s390/vdso: " Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 22/24] MIPS: ELF: Add more PC-relative relocation definitions Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 23/24] MIPS: vdso: Enable the vdsocheck tool Thomas Weißschuh
2025-08-12  5:44 ` [PATCH v4 24/24] vdso/vdsocheck: Drop the transitional kconfig option Thomas Weißschuh
2025-08-12 11:07 ` [PATCH v4 00/24] vdso: Reject absolute relocations during build Miguel Ojeda
2025-08-13  8:16   ` Thomas Weißschuh
2025-08-14 13:43 ` Christophe Leroy
2025-08-15 10:06   ` Thomas Weißschuh

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).