aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/kernel/trap_kern.c
diff options
context:
space:
mode:
authorPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>2005-09-30 14:58:59 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-30 15:41:18 -0400
commitbe662a18b7763496a052d489206af9ca2c2e1ac2 (patch)
tree73b0777d900e2f6b10642acd1e6a0d8017cc61e8 /arch/um/kernel/trap_kern.c
parent79dfa4a5a2eea5035de793b1633031750fe8d3ff (diff)
[PATCH] uml: fix page faults in SKAS3 mode.
I hadn't been running a SKAS3 host when testing the "uml: fix hang in TT mode on fault" patch (commit 546fe1cbf91d4d62e3849517c31a2327c992e5c5), and I didn't think enough to the missing trap_no in SKAS3 mode. In fact, the resulting kernel doesn't work at all in SKAS3 mode. Signed-off-by: Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/um/kernel/trap_kern.c')
-rw-r--r--arch/um/kernel/trap_kern.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/arch/um/kernel/trap_kern.c b/arch/um/kernel/trap_kern.c
index d297429ac360..95c8f8733baf 100644
--- a/arch/um/kernel/trap_kern.c
+++ b/arch/um/kernel/trap_kern.c
@@ -26,6 +26,9 @@
26#include "mconsole_kern.h" 26#include "mconsole_kern.h"
27#include "mem.h" 27#include "mem.h"
28#include "mem_kern.h" 28#include "mem_kern.h"
29#ifdef CONFIG_MODE_SKAS
30#include "skas.h"
31#endif
29 32
30/* Note this is constrained to return 0, -EFAULT, -EACCESS, -ENOMEM by segv(). */ 33/* Note this is constrained to return 0, -EFAULT, -EACCESS, -ENOMEM by segv(). */
31int handle_page_fault(unsigned long address, unsigned long ip, 34int handle_page_fault(unsigned long address, unsigned long ip,
@@ -134,7 +137,7 @@ unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user, void *sc)
134 else if(current->mm == NULL) 137 else if(current->mm == NULL)
135 panic("Segfault with no mm"); 138 panic("Segfault with no mm");
136 139
137 if (SEGV_IS_FIXABLE(&fi)) 140 if (SEGV_IS_FIXABLE(&fi) || SEGV_MAYBE_FIXABLE(&fi))
138 err = handle_page_fault(address, ip, is_write, is_user, &si.si_code); 141 err = handle_page_fault(address, ip, is_write, is_user, &si.si_code);
139 else { 142 else {
140 err = -EFAULT; 143 err = -EFAULT;