Check for busy or wired in vm_page_relookup(). Some callers will only keep

a page wired and expect it to still be present.

Reported by:	delphij@FreeBSD.org
Reviewed by:	kib
This commit is contained in:
Jeff Roberson 2020-03-11 22:25:45 +00:00
parent 95ca762da8
commit d1105e9441

View File

@ -1672,7 +1672,7 @@ vm_page_relookup(vm_object_t object, vm_pindex_t pindex)
vm_page_t m; vm_page_t m;
m = vm_radix_lookup_unlocked(&object->rtree, pindex); m = vm_radix_lookup_unlocked(&object->rtree, pindex);
KASSERT(m != NULL && vm_page_busied(m) && KASSERT(m != NULL && (vm_page_busied(m) || vm_page_wired(m)) &&
m->object == object && m->pindex == pindex, m->object == object && m->pindex == pindex,
("vm_page_relookup: Invalid page %p", m)); ("vm_page_relookup: Invalid page %p", m));
return (m); return (m);