From e260620eb4c28d4243f62c1d5f7e66cc6e773b8c Mon Sep 17 00:00:00 2001 From: Max Filippov Date: Thu, 15 Sep 2022 12:30:52 -0700 Subject: xtensa: ldso: make GOT protection adjustment conditional Xtensa PERFORM_BOOTSTRAP_GOT macro uses mprotect to make bits of GOT writable, but noMMU linux kernel returns ENOSYS to mprotect syscalls, and syscall wrapper tries to update errno with the error code. This happens well before the relocations are done and results in writes to unrelated locations, memory corruption or protection violations. Only define PERFORM_BOOTSTRAP_GOT when building xtensa configuration with MMU support. Signed-off-by: Max Filippov --- ldso/ldso/xtensa/dl-startup.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'ldso') diff --git a/ldso/ldso/xtensa/dl-startup.h b/ldso/ldso/xtensa/dl-startup.h index 92877aa01..439bdbd7a 100644 --- a/ldso/ldso/xtensa/dl-startup.h +++ b/ldso/ldso/xtensa/dl-startup.h @@ -88,6 +88,7 @@ __asm__ ( /* Function calls are not safe until the GOT relocations have been done. */ #define NO_FUNCS_BEFORE_BOOTSTRAP +#if defined(__ARCH_USE_MMU__) #define PERFORM_BOOTSTRAP_GOT(tpnt) \ do { \ xtensa_got_location *got_loc; \ @@ -124,3 +125,4 @@ do { \ PROT_READ | PROT_WRITE | PROT_EXEC); \ } \ } while (0) +#endif -- cgit v1.2.3