Commit 35eb6af9 authored by Martin Schwidefsky's avatar Martin Schwidefsky Committed by Linus Torvalds

[PATCH] s390: sacf local root exploit (CAN-2004-0887)

s390 core changes:
 - Force user process back to home space mode in space switch event
   exception handler.
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e11dfad4
...@@ -630,6 +630,21 @@ asmlinkage void data_exception(struct pt_regs * regs, long interruption_code) ...@@ -630,6 +630,21 @@ asmlinkage void data_exception(struct pt_regs * regs, long interruption_code)
} }
} }
asmlinkage void space_switch_exception(struct pt_regs * regs, long int_code)
{
siginfo_t info;
/* Set user psw back to home space mode. */
if (regs->psw.mask & PSW_MASK_PSTATE)
regs->psw.mask |= PSW_ASC_HOME;
/* Send SIGILL. */
info.si_signo = SIGILL;
info.si_errno = 0;
info.si_code = ILL_PRVOPC;
info.si_addr = get_check_address(regs);
do_trap(int_code, SIGILL, "space switch event", regs, &info);
}
asmlinkage void kernel_stack_overflow(struct pt_regs * regs) asmlinkage void kernel_stack_overflow(struct pt_regs * regs)
{ {
die("Kernel stack overflow", regs, 0); die("Kernel stack overflow", regs, 0);
...@@ -673,7 +688,7 @@ void __init trap_init(void) ...@@ -673,7 +688,7 @@ void __init trap_init(void)
pgm_check_table[0x3B] = &do_dat_exception; pgm_check_table[0x3B] = &do_dat_exception;
#endif /* CONFIG_ARCH_S390X */ #endif /* CONFIG_ARCH_S390X */
pgm_check_table[0x15] = &operand_exception; pgm_check_table[0x15] = &operand_exception;
pgm_check_table[0x1C] = &privileged_op; pgm_check_table[0x1C] = &space_switch_exception;
pgm_check_table[0x1D] = &hfp_sqrt_exception; pgm_check_table[0x1D] = &hfp_sqrt_exception;
pgm_check_table[0x40] = &do_monitor_call; pgm_check_table[0x40] = &do_monitor_call;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment