diff options
author | alc <alc@FreeBSD.org> | 2004-06-13 21:59:42 +0000 |
---|---|---|
committer | alc <alc@FreeBSD.org> | 2004-06-13 21:59:42 +0000 |
commit | a73d5d0e50c9043a461d29ff6ede2a466e91b6ba (patch) | |
tree | 1c42a251775e9c205d93aa24870769e489b118d5 /sys/amd64 | |
parent | 0e1c766f8f47048d9631453bf23884ce6cb33a70 (diff) | |
download | FreeBSD-src-a73d5d0e50c9043a461d29ff6ede2a466e91b6ba.zip FreeBSD-src-a73d5d0e50c9043a461d29ff6ede2a466e91b6ba.tar.gz |
Prevent the loss of a PG_M bit through an SMP race in pmap_ts_referenced().
Diffstat (limited to 'sys/amd64')
-rw-r--r-- | sys/amd64/amd64/pmap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c index b0e1103..7d52084 100644 --- a/sys/amd64/amd64/pmap.c +++ b/sys/amd64/amd64/pmap.c @@ -2669,7 +2669,7 @@ pmap_ts_referenced(vm_page_t m) pte = pmap_pte(pv->pv_pmap, pv->pv_va); if (pte && ((v = pte_load(pte)) & PG_A) != 0) { - pte_store(pte, v & ~PG_A); + atomic_clear_long(pte, PG_A); pmap_invalidate_page(pv->pv_pmap, pv->pv_va); rtval++; |