Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/amd64/trap.c
Show First 20 Lines • Show All 800 Lines • ▼ Show 20 Lines | if (frame->tf_err & PGEX_RSV) { | ||||
trap_fatal(frame, eva); | trap_fatal(frame, eva); | ||||
return (-1); | return (-1); | ||||
} | } | ||||
/* | /* | ||||
* If nx protection of the usermode portion of kernel page | * If nx protection of the usermode portion of kernel page | ||||
* tables caused trap, panic. | * tables caused trap, panic. | ||||
*/ | */ | ||||
if (PCPU_GET(curpmap)->pm_ucr3 != PMAP_NO_CR3 && usermode && | if (usermode && PCPU_GET(curpmap)->pm_ucr3 != PMAP_NO_CR3 && | ||||
pg_nx != 0 && (frame->tf_err & (PGEX_P | PGEX_W | | pg_nx != 0 && (frame->tf_err & (PGEX_P | PGEX_W | | ||||
PGEX_U | PGEX_I)) == (PGEX_P | PGEX_U | PGEX_I) && | PGEX_U | PGEX_I)) == (PGEX_P | PGEX_U | PGEX_I) && | ||||
(curpcb->pcb_saved_ucr3 & ~CR3_PCID_MASK)== | (curpcb->pcb_saved_ucr3 & ~CR3_PCID_MASK)== | ||||
(PCPU_GET(curpmap)->pm_cr3 & ~CR3_PCID_MASK)) | (PCPU_GET(curpmap)->pm_cr3 & ~CR3_PCID_MASK)) | ||||
panic("PTI: pid %d comm %s tf_err %#lx\n", p->p_pid, | panic("PTI: pid %d comm %s tf_err %#lx\n", p->p_pid, | ||||
p->p_comm, frame->tf_err); | p->p_comm, frame->tf_err); | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 263 Lines • Show Last 20 Lines |