summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-07-22 02:05:46 +0000
committeralc <alc@FreeBSD.org>2004-07-22 02:05:46 +0000
commit0f7acf64918a5a3c1315a3006056d90c8859c32e (patch)
treeebfec96992ea42d876e9f50c33f6c3259c2a9e13 /sys/ia64
parentec381bb4bb1f8fdf216504ee0cac326d412b8369 (diff)
downloadFreeBSD-src-0f7acf64918a5a3c1315a3006056d90c8859c32e.zip
FreeBSD-src-0f7acf64918a5a3c1315a3006056d90c8859c32e.tar.gz
In pmap_mincore() create a private copy of the pte for use after the pmap
lock is released.
Diffstat (limited to 'sys/ia64')
-rw-r--r--sys/ia64/ia64/pmap.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sys/ia64/ia64/pmap.c b/sys/ia64/ia64/pmap.c
index a6e227a..e26bdc5 100644
--- a/sys/ia64/ia64/pmap.c
+++ b/sys/ia64/ia64/pmap.c
@@ -2188,12 +2188,16 @@ int
pmap_mincore(pmap_t pmap, vm_offset_t addr)
{
pmap_t oldpmap;
- struct ia64_lpte *pte;
+ struct ia64_lpte *pte, tpte;
int val = 0;
PMAP_LOCK(pmap);
oldpmap = pmap_install(pmap);
pte = pmap_find_vhpt(addr);
+ if (pte != NULL) {
+ tpte = *pte;
+ pte = &tpte;
+ }
pmap_install(oldpmap);
PMAP_UNLOCK(pmap);
OpenPOWER on IntegriCloud