summaryrefslogtreecommitdiff
path: root/arch/sparc/kernel/windows.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/kernel/windows.c')
-rw-r--r--arch/sparc/kernel/windows.c12
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;
}