diff options
Diffstat (limited to 'arch/sparc/kernel/windows.c')
| -rw-r--r-- | arch/sparc/kernel/windows.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/sparc/kernel/windows.c b/arch/sparc/kernel/windows.c index 3107381e576d..8f20862ccc83 100644 --- a/arch/sparc/kernel/windows.c +++ b/arch/sparc/kernel/windows.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 /* windows.c: Routines to deal with register window management * at the C-code level. * @@ -10,7 +11,10 @@ #include <linux/mm.h> #include <linux/smp.h> -#include <asm/uaccess.h> +#include <asm/cacheflush.h> +#include <linux/uaccess.h> + +#include "kernel.h" /* Do save's until all user register windows are out of the cpu. */ void flush_user_windows(void) @@ -117,8 +121,10 @@ void try_to_clear_window_buffer(struct pt_regs *regs, int who) if ((sp & 7) || copy_to_user((char __user *) sp, &tp->reg_window[window], - sizeof(struct reg_window32))) - do_exit(SIGILL); + sizeof(struct reg_window32))) { + force_exit_sig(SIGILL); + return; + } } tp->w_saved = 0; } |
