aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Cox <alc@FreeBSD.org>2014-07-15 17:16:06 +0000
committerAlan Cox <alc@FreeBSD.org>2014-07-15 17:16:06 +0000
commit87dd8ef960f9d620cdf156652c22e1e3c682d77a (patch)
tree459269314a2b710874a841c699581c0e45162551
parentfae9277339678a481d68f940652ffdef3e696670 (diff)
downloadsrc-87dd8ef960f9d620cdf156652c22e1e3c682d77a.tar.gz
src-87dd8ef960f9d620cdf156652c22e1e3c682d77a.zip
Actually set the "no execute" bit on 1 MB page mappings in pmap_protect().
Previously, the "no execute" bit was being set directly in the PTE, instead of the local variable in which the new PTE value is being constructed. So, when the local variable was finally assigned to the PTE, the "no execute" bit setting was lost.
Notes
Notes: svn path=/head/; revision=268693
-rw-r--r--sys/arm/arm/pmap-v6.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/arm/arm/pmap-v6.c b/sys/arm/arm/pmap-v6.c
index 3ae139bb07ee..7bd0cdc6d5ba 100644
--- a/sys/arm/arm/pmap-v6.c
+++ b/sys/arm/arm/pmap-v6.c
@@ -2846,7 +2846,7 @@ pmap_protect(pmap_t pmap, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot)
eva >= next_bucket) {
l1pd &= ~(L1_S_PROT_MASK | L1_S_XN);
if (!(prot & VM_PROT_EXECUTE))
- *pl1pd |= L1_S_XN;
+ l1pd |= L1_S_XN;
/*
* At this point we are always setting
* write-protect bit.