diff options
author | alc <alc@FreeBSD.org> | 2010-03-25 17:24:03 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2010-03-25 17:24:03 +0000 |
commit | cb200ace0730b74bdb7fbda34a8a65d80b5c5f16 (patch) | |
tree | 7981fb6ac2ee91e8a01f7696950fd9cc1946628d | |
parent | b360d7db9a6ab6ca923817b16369d869bd87bf76 (diff) | |
download | FreeBSD-src-cb200ace0730b74bdb7fbda34a8a65d80b5c5f16.zip FreeBSD-src-cb200ace0730b74bdb7fbda34a8a65d80b5c5f16.tar.gz |
A ptrace(2) by one processor may trigger a promotion in the address space
of another process. Modify pmap_promote_pde() to handle this. (This is
not a problem on amd64 due to implementation differences.)
Reported by: jh@
MFC after: 1 week
-rw-r--r-- | sys/i386/i386/pmap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/i386/i386/pmap.c b/sys/i386/i386/pmap.c index c83e99c..c501878 100644 --- a/sys/i386/i386/pmap.c +++ b/sys/i386/i386/pmap.c @@ -3154,7 +3154,7 @@ pmap_promote_pde(pmap_t pmap, pd_entry_t *pde, vm_offset_t va) * either invalid, unused, or does not map the first 4KB physical page * within a 2- or 4MB page. */ - firstpte = vtopte(trunc_4mpage(va)); + firstpte = pmap_pte_quick(pmap, trunc_4mpage(va)); setpde: newpde = *firstpte; if ((newpde & ((PG_FRAME & PDRMASK) | PG_A | PG_V)) != (PG_A | PG_V)) { |