mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Lock the vm object when removing a page.
This commit is contained in:
parent
316b600c46
commit
2ab3670aad
2 changed files with 5 additions and 0 deletions
|
|
@ -222,6 +222,7 @@ jumbo_pg_free(vm_offset_t addr)
|
|||
paddr = pmap_kextract((vm_offset_t)addr);
|
||||
pg = PHYS_TO_VM_PAGE(paddr);
|
||||
|
||||
VM_OBJECT_LOCK(jumbo_vm_object);
|
||||
if (pg->object != jumbo_vm_object) {
|
||||
jumbo_vmuiomove_pgs_freed++;
|
||||
/* if(vm_page_lookup(jumbo_vm_object, atop(addr - jumbo_basekva)))
|
||||
|
|
@ -235,6 +236,7 @@ jumbo_pg_free(vm_offset_t addr)
|
|||
vm_page_free(pg);
|
||||
vm_page_unlock_queues();
|
||||
}
|
||||
VM_OBJECT_UNLOCK(jumbo_vm_object);
|
||||
|
||||
mtx_lock(&jumbo_mutex);
|
||||
|
||||
|
|
|
|||
|
|
@ -1926,6 +1926,8 @@ retry_lookup:
|
|||
IO_VMIO | ((MAXBSIZE / bsize) << 16),
|
||||
td->td_ucred, NOCRED, &resid, td);
|
||||
VOP_UNLOCK(vp, 0, td);
|
||||
if (error)
|
||||
VM_OBJECT_LOCK(obj);
|
||||
vm_page_lock_queues();
|
||||
vm_page_flag_clear(pg, PG_ZERO);
|
||||
vm_page_io_finish(pg);
|
||||
|
|
@ -1942,6 +1944,7 @@ retry_lookup:
|
|||
vm_page_free(pg);
|
||||
}
|
||||
vm_page_unlock_queues();
|
||||
VM_OBJECT_UNLOCK(obj);
|
||||
sbunlock(&so->so_snd);
|
||||
goto done;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue