klibc-bot for Ben Hutchings
2020-Aug-20 22:27 UTC
[klibc] [klibc:execstack-fixes] s390: Set sa_restorer for signals and disable executable stack
Commit-ID: 89d59ccf2d6ffede32c32b26eda57c24ec33b275 Gitweb: http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=89d59ccf2d6ffede32c32b26eda57c24ec33b275 Author: Ben Hutchings <ben at decadent.org.uk> AuthorDate: Thu, 30 Apr 2020 03:38:34 +0100 Committer: Ben Hutchings <ben at decadent.org.uk> CommitDate: Thu, 20 Aug 2020 23:21:25 +0100 [klibc] s390: Set sa_restorer for signals and disable executable stack Add a __sigreturn stub and point sa_restorer to it by default, so that the kernel doesn't create stack trampolines for signal return. With that done, we no longer need an executable stack. Signed-off-by: Ben Hutchings <ben at decadent.org.uk> --- usr/include/arch/s390/klibc/archconfig.h | 3 +++ usr/klibc/SYSCALLS.def | 1 + usr/klibc/arch/s390/MCONFIG | 5 ++--- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/usr/include/arch/s390/klibc/archconfig.h b/usr/include/arch/s390/klibc/archconfig.h index d7a71a4b..4c45f98a 100644 --- a/usr/include/arch/s390/klibc/archconfig.h +++ b/usr/include/arch/s390/klibc/archconfig.h @@ -12,4 +12,7 @@ /* Both s390 and s390x use the "32-bit" version of this structure */ #define _KLIBC_STATFS_F_TYPE_64 0 +/* So that we can avoid stack trampolines */ +#define _KLIBC_NEEDS_SA_RESTORER 1 + #endif /* _KLIBC_ARCHCONFIG_H */ diff --git a/usr/klibc/SYSCALLS.def b/usr/klibc/SYSCALLS.def index 461d9bf6..16faabcb 100644 --- a/usr/klibc/SYSCALLS.def +++ b/usr/klibc/SYSCALLS.def @@ -228,6 +228,7 @@ int sigprocmask(int, const sigset_t *, sigset_t *); */ <sh,sparc,alpha,ppc,sparc64> int sigsuspend::__sigsuspend_s(sigset_t); <arm,frv,i386,m68k,mn10300,s390,s390x> int sigsuspend::__sigsuspend_xxs(int, int, sigset_t); +<s390> void sigreturn::__sigreturn(); #endif int kill(pid_t, int); <?> unsigned int alarm(unsigned int); diff --git a/usr/klibc/arch/s390/MCONFIG b/usr/klibc/arch/s390/MCONFIG index c36acd7a..7ffbcc45 100644 --- a/usr/klibc/arch/s390/MCONFIG +++ b/usr/klibc/arch/s390/MCONFIG @@ -22,6 +22,5 @@ endif KLIBCASMARCH = s390 KLIBCSHAREDFLAGS = -Ttext-segment 0x40000000 -# Kernel uses stack trampoline for signal return unless we set -# sa_restorer -KLIBCEXECSTACK := y +# Kernel uses our sa_restorer for signal return +KLIBCEXECSTACK := n
Reasonably Related Threads
- [klibc:execstack-fixes] s390: Set sa_restorer for signals and disable executable stack
- [klibc:master] s390: Set sa_restorer for signals and disable executable stack
- [klibc:execstack-fixes] sparc: Set sa_restorer for signals and disable executable stack
- [klibc:execstack-fixes] sparc: Set sa_restorer for signals and disable executable stack
- [klibc:execstack-fixes] alpha: Set sa_restorer for signals and disable executable stack