Acquire the page queues lock in pmap_insert_entry(). (I used to believe
that the page's busy flag could be relied upon to synchronize access to the pv list. I don't any longer. See, for example, the call to pmap_insert_entry() from pmap_copy().)
This commit is contained in:
parent
887dd1d910
commit
b0b2803a3b
@ -1592,6 +1592,7 @@ pmap_insert_entry(pmap_t pmap, vm_offset_t va, vm_page_t mpte, vm_page_t m)
|
||||
pv_entry_t pv;
|
||||
|
||||
s = splvm();
|
||||
vm_page_lock_queues();
|
||||
pv = get_pv_entry();
|
||||
pv->pv_va = va;
|
||||
pv->pv_pmap = pmap;
|
||||
@ -1601,6 +1602,7 @@ pmap_insert_entry(pmap_t pmap, vm_offset_t va, vm_page_t mpte, vm_page_t m)
|
||||
TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list);
|
||||
m->md.pv_list_count++;
|
||||
|
||||
vm_page_unlock_queues();
|
||||
splx(s);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user