diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c index 696f4eebfeff..0242fe54f6fb 100644 --- a/sys/vm/vm_page.c +++ b/sys/vm/vm_page.c @@ -1200,7 +1200,7 @@ vm_page_replace(vm_page_t mnew, vm_object_t object, vm_pindex_t pindex) mnew->object = object; mnew->pindex = pindex; - mold = vm_radix_replace(&object->rtree, mnew, pindex); + mold = vm_radix_replace(&object->rtree, mnew); KASSERT(mold->queue == PQ_NONE, ("vm_page_replace: mold is on a paging queue")); diff --git a/sys/vm/vm_radix.c b/sys/vm/vm_radix.c index ff311b2d5b55..7c6f7fa40328 100644 --- a/sys/vm/vm_radix.c +++ b/sys/vm/vm_radix.c @@ -788,20 +788,18 @@ vm_radix_reclaim_allnodes(struct vm_radix *rtree) } /* - * Replace an existing page into the trie with another one. - * Panics if the replacing page is not present or if the new page has an - * invalid key. + * Replace an existing page in the trie with another one. + * Panics if there is not an old page in the trie at the new page's index. */ vm_page_t -vm_radix_replace(struct vm_radix *rtree, vm_page_t newpage, vm_pindex_t index) +vm_radix_replace(struct vm_radix *rtree, vm_page_t newpage) { struct vm_radix_node *rnode; vm_page_t m; + vm_pindex_t index; int slot; - KASSERT(newpage->pindex == index, ("%s: newpage index invalid", - __func__)); - + index = newpage->pindex; rnode = vm_radix_getroot(rtree); if (rnode == NULL) panic("%s: replacing page on an empty trie", __func__); diff --git a/sys/vm/vm_radix.h b/sys/vm/vm_radix.h index 4491860027b8..63d27d4f088f 100644 --- a/sys/vm/vm_radix.h +++ b/sys/vm/vm_radix.h @@ -43,8 +43,7 @@ vm_page_t vm_radix_lookup_ge(struct vm_radix *rtree, vm_pindex_t index); vm_page_t vm_radix_lookup_le(struct vm_radix *rtree, vm_pindex_t index); void vm_radix_reclaim_allnodes(struct vm_radix *rtree); void vm_radix_remove(struct vm_radix *rtree, vm_pindex_t index); -vm_page_t vm_radix_replace(struct vm_radix *rtree, vm_page_t newpage, - vm_pindex_t index); +vm_page_t vm_radix_replace(struct vm_radix *rtree, vm_page_t newpage); #endif /* _KERNEL */ #endif /* !_VM_RADIX_H_ */