From 3173042ecc2f6558a9ade1810a944632d79345e5 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Mon, 14 Aug 2006 06:15:16 +0000 Subject: [PATCH] It's not entirely obvious that PGEX_I must be zero if no-execute is neither supported nor enabled. Just to be sure, verify that no-execute is enabled before passing VM_PROT_EXECUTE to vm_fault(). Suggested by: tegge@ --- sys/amd64/amd64/trap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sys/amd64/amd64/trap.c b/sys/amd64/amd64/trap.c index 1b6488f22e8..daad6829043 100644 --- a/sys/amd64/amd64/trap.c +++ b/sys/amd64/amd64/trap.c @@ -568,11 +568,11 @@ trap_pfault(frame, usermode) /* * PGEX_I is defined only if the execute disable bit capability is - * supported and enabled; otherwise, that bit is reserved, i.e., zero. + * supported and enabled. */ if (frame->tf_err & PGEX_W) ftype = VM_PROT_WRITE; - else if (frame->tf_err & PGEX_I) + else if ((frame->tf_err & PGEX_I) && pg_nx != 0) ftype = VM_PROT_EXECUTE; else ftype = VM_PROT_READ;