summaryrefslogtreecommitdiffstats
path: root/sys/amd64
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2004-06-13 21:59:42 +0000
committeralc <alc@FreeBSD.org>2004-06-13 21:59:42 +0000
commita73d5d0e50c9043a461d29ff6ede2a466e91b6ba (patch)
tree1c42a251775e9c205d93aa24870769e489b118d5 /sys/amd64
parent0e1c766f8f47048d9631453bf23884ce6cb33a70 (diff)
downloadFreeBSD-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.c2
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++;
OpenPOWER on IntegriCloud