summaryrefslogtreecommitdiffstats
path: root/arch/s390/mm
diff options
context:
space:
mode:
authorCarsten Otte <cotte@de.ibm.com>2009-03-26 15:23:57 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2009-03-26 15:24:09 +0100
commit702d9e584feb028ed7e2a6d2b103b8ea57622ff2 (patch)
tree965f82b6d0d82e8492a97ac5a117ba47c26d1674 /arch/s390/mm
parent[S390] lockdep: trace hardirq off in smp_send_stop (diff)
downloadlinux-702d9e584feb028ed7e2a6d2b103b8ea57622ff2.tar.xz
linux-702d9e584feb028ed7e2a6d2b103b8ea57622ff2.zip
[S390] check addressing mode in s390_enable_sie
The sie instruction requires address spaces to be switched to run proper. This patch verifies that this is the case in s390_enable_sie, otherwise the kernel would crash badly as soon as the process runs into sie. Signed-off-by: Carsten Otte <cotte@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/mm')
-rw-r--r--arch/s390/mm/pgtable.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
index 6b6ddc4ea02b..9bf86125f6f3 100644
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@ -258,6 +258,10 @@ int s390_enable_sie(void)
struct task_struct *tsk = current;
struct mm_struct *mm, *old_mm;
+ /* Do we have switched amode? If no, we cannot do sie */
+ if (!switch_amode)
+ return -EINVAL;
+
/* Do we have pgstes? if yes, we are done */
if (tsk->mm->context.has_pgste)
return 0;