Index: sys/arch/i386/i386/trap.c
===================================================================
RCS file: /cvsroot/src/sys/arch/i386/i386/trap.c,v
retrieving revision 1.301
diff -p -u -r1.301 trap.c
--- sys/arch/i386/i386/trap.c 29 May 2019 14:28:37 -0000 1.301
+++ sys/arch/i386/i386/trap.c 6 Jun 2019 06:25:21 -0000
@@ -582,17 +582,20 @@ kernelfault:
if (frame->tf_err & PGEX_X) {
/* SMEP might have brought us here */
- if (cr2 > VM_MIN_ADDRESS && cr2 <= VM_MAXUSER_ADDRESS)
- panic("prevented execution of %p (SMEP)",
+ if (cr2 > VM_MIN_ADDRESS && cr2 <= VM_MAXUSER_ADDRESS) {
+ printf("prevented execution of %p (SMEP)",
(void *)cr2);
+ goto we_re_toast;
+ }
}
if ((frame->tf_err & PGEX_P) &&
cr2 < VM_MAXUSER_ADDRESS) {
/* SMAP might have brought us here */
if (onfault_handler(pcb, frame) == NULL) {
- panic("prevented access to %p (SMAP)",
+ printf("prevented access to %p (SMAP)",
(void *)cr2);
+ goto we_re_toast;
}
}
Index: sys/arch/amd64/amd64/trap.c
===================================================================
RCS file: /cvsroot/src/sys/arch/amd64/amd64/trap.c,v
retrieving revision 1.120
diff -p -u -r1.120 trap.c
--- sys/arch/amd64/amd64/trap.c 15 May 2019 13:49:10 -0000 1.120
+++ sys/arch/amd64/amd64/trap.c 6 Jun 2019 06:25:21 -0000
@@ -481,13 +481,10 @@ trap(struct trapframe *frame)
if (frame->tf_err & PGEX_X) {
/* SMEP might have brought us here */
if (cr2 < VM_MAXUSER_ADDRESS) {
- if (cr2 == 0)
- panic("prevented jump to null"
- " instruction pointer (SMEP)");
- else
- panic("prevented execution of"
- " user address %p (SMEP)",
- (void *)cr2);
+ printf("prevented execution of"
+ " user address %p (SMEP)",
+ (void *)cr2);
+ goto we_re_toast;
}
}
@@ -495,8 +492,9 @@ trap(struct trapframe *frame)
cr2 < VM_MAXUSER_ADDRESS) {
/* SMAP might have brought us here */
if (onfault_handler(pcb, frame) == NULL) {
- panic("prevented access to %p (SMAP)",
+ printf("prevented access to %p (SMAP)",
(void *)cr2);
+ goto we_re_toast;
}
}