summaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/traps.c
diff options
context:
space:
mode:
authorSven Schnelle <svens@linux.ibm.com>2021-04-29 11:14:51 +0200
committerHeiko Carstens <hca@linux.ibm.com>2021-04-30 17:20:39 +0200
commitbae1cd368c45d1127e054e90305d585dbc8b3b46 (patch)
tree07224dd0189f8d3d63f1582a3ef7850250d884d0 /arch/s390/kernel/traps.c
parents390/configs: change CONFIG_VIRTIO_CONSOLE to "m" (diff)
downloadlinux-bae1cd368c45d1127e054e90305d585dbc8b3b46.tar.xz
linux-bae1cd368c45d1127e054e90305d585dbc8b3b46.zip
s390/entry: add support for syscall stack randomization
This adds support for adding a random offset to the stack while handling syscalls. The patch uses get_tod_clock_fast() as this is considered good enough and has much less performance penalty compared to using get_random_int(). The patch also adds randomization in pgm_check_handler() as the sigreturn/rt_sigreturn system calls might be called from there. Signed-off-by: Sven Schnelle <svens@linux.ibm.com> Link: https://lore.kernel.org/r/20210429091451.1062594-1-svens@linux.ibm.com Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Diffstat (limited to 'arch/s390/kernel/traps.c')
-rw-r--r--arch/s390/kernel/traps.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index 63021d484626..8dd23c703718 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -17,6 +17,7 @@
#include "asm/ptrace.h"
#include <linux/kprobes.h>
#include <linux/kdebug.h>
+#include <linux/randomize_kstack.h>
#include <linux/extable.h>
#include <linux/ptrace.h>
#include <linux/sched.h>
@@ -301,6 +302,7 @@ void noinstr __do_pgm_check(struct pt_regs *regs)
unsigned int trapnr, syscall_redirect = 0;
irqentry_state_t state;
+ add_random_kstack_offset();
regs->int_code = *(u32 *)&S390_lowcore.pgm_ilc;
regs->int_parm_long = S390_lowcore.trans_exc_code;