mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH v2 0/3] sparc64: Randomize mmap base and PIE executables
@ 2026-10-18 12:27 Stian Halseth
  2026-10-18 12:27 ` [PATCH v2 1/3] sparc64: Start bottom-up mmap searches at mm->mmap_base Stian Halseth
                   ` (3 more replies)
  0 siblings, 4 replies; 10+ messages in thread
From: Stian Halseth @ 2026-10-18 12:27 UTC (permalink / raw)
  To: Andreas Larsson, David S . Miller
  Cc: Kees Cook, Michel Lespinasse, Jan Engelhardt, sparclinux,
	linux-mm, linux-kernel, Stian Halseth

On sparc64 a 64-bit process gets little address space randomization:
the stack moves, but shared libraries, anonymous mappings, PIE
executables and the brk heap land at the same address on every run.

Patch 1 makes arch_get_unmapped_area() start at the randomized
mm->mmap_base again, which it has ignored since v3.8. Patch 2 moves the
32-bit PIE base out of the legacy mmap area, so that patch 3 can select
ARCH_HAS_ELF_RANDOMIZE and randomize PIE executables and brk as on
other architectures.

Found while adding PIE support to the sparc64 Go port:
https://github.com/sparclinux/issues/issues/119

Tested on a T4-1 and a T7-1 (sun4v) and a V240 (sun4u), with 64-bit and
32-bit userland. With the series the program image, brk, shared
libraries and mmap base move between runs, and with
randomize_va_space=0 or setarch -R the layout is the same as before.
The exec and mm selftests, glibc's elf and nptl tests, the Python test
suite and a kernel build give the same results with and without the
series.

Changes in v2:
- New patch 2: move COMPAT_ELF_ET_DYN_BASE below the 32-bit legacy mmap
  base, so a 32-bit PIE and the brk of an explicitly executed loader no
  longer land in the mmap area (Sashiko). Tested on the T4 with 32-bit
  userland, including PIEs with large p_align.
- Add Jan's Tested-by to patches 1 and 3.

v1: https://lore.kernel.org/all/20261017100451.2266781-1-stian@itx.no/

Stian Halseth (3):
  sparc64: Start bottom-up mmap searches at mm->mmap_base
  sparc64: Move the 32-bit PIE base below the legacy mmap base
  sparc64: Randomize the load address of PIE executables

 .../features/vm/ELF-ASLR/arch-support.txt      |  2 +-
 arch/sparc/Kconfig                             |  1 +
 arch/sparc/include/asm/elf_64.h                |  2 +-
 arch/sparc/kernel/sys_sparc_64.c               | 18 ++++++++++++++----
 4 files changed, 17 insertions(+), 6 deletions(-)


base-commit: 24a19b953e2a3d0ea5a8c4951a0ab8f32720c907
-- 
2.43.0


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

end of thread, other threads:[~2026-10-18 21:12 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-18 12:27 [PATCH v2 0/3] sparc64: Randomize mmap base and PIE executables Stian Halseth
2026-10-18 12:27 ` [PATCH v2 1/3] sparc64: Start bottom-up mmap searches at mm->mmap_base Stian Halseth
2026-10-18 12:27 ` [PATCH v2 2/3] sparc64: Move the 32-bit PIE base below the legacy mmap base Stian Halseth
2026-10-18 12:27 ` [PATCH v2 3/3] sparc64: Randomize the load address of PIE executables Stian Halseth
2026-10-18 13:09 ` [PATCH v2 0/3] sparc64: Randomize mmap base and " John Paul Adrian Glaubitz
2026-10-18 13:33   ` Stian Halseth
2026-10-18 13:38     ` Stian Halseth
2026-10-18 20:37       ` Magnus Lindholm
2026-10-18 21:08         ` Stian Halseth
2026-10-18 21:12           ` Magnus Lindholm

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®