diff options
author | nwhitehorn <nwhitehorn@FreeBSD.org> | 2012-03-27 01:26:00 +0000 |
---|---|---|
committer | nwhitehorn <nwhitehorn@FreeBSD.org> | 2012-03-27 01:26:00 +0000 |
commit | 78cf971b20065b4a5a59338c546670616a46f26f (patch) | |
tree | ab83f7837208e3b2d023346ae5ff626cb75b5f4a /sys/powerpc | |
parent | 3bbb70297a6689f73dbb71ef4cd588d142737626 (diff) | |
download | FreeBSD-src-78cf971b20065b4a5a59338c546670616a46f26f.zip FreeBSD-src-78cf971b20065b4a5a59338c546670616a46f26f.tar.gz |
Make sure to call vm_page_dirty() before the pmap lock is released to
prevent a race where another process could conclude the page was clean.
Submitted by: alc
Diffstat (limited to 'sys/powerpc')
-rw-r--r-- | sys/powerpc/aim/mmu_oea64.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/powerpc/aim/mmu_oea64.c b/sys/powerpc/aim/mmu_oea64.c index dd79415..794f891 100644 --- a/sys/powerpc/aim/mmu_oea64.c +++ b/sys/powerpc/aim/mmu_oea64.c @@ -1582,11 +1582,11 @@ moea64_remove_write(mmu_t mmu, vm_page_t m) isync(); } } + if ((lo & LPTE_CHG) != 0) + vm_page_dirty(m); PMAP_UNLOCK(pmap); } UNLOCK_TABLE_RD(); - if ((lo & LPTE_CHG) != 0) - vm_page_dirty(m); vm_page_aflag_clear(m, PGA_WRITEABLE); } |