diff options
author | alc <alc@FreeBSD.org> | 2004-07-22 02:05:46 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2004-07-22 02:05:46 +0000 |
commit | 0f7acf64918a5a3c1315a3006056d90c8859c32e (patch) | |
tree | ebfec96992ea42d876e9f50c33f6c3259c2a9e13 /sys | |
parent | ec381bb4bb1f8fdf216504ee0cac326d412b8369 (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/ia64/ia64/pmap.c | 6 |
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); |