aboutsummaryrefslogtreecommitdiff
path: root/sys/vm/vm_page.c
diff options
context:
space:
mode:
authorMark Johnston <markj@FreeBSD.org>2018-03-18 16:35:40 +0000
committerMark Johnston <markj@FreeBSD.org>2018-03-18 16:35:40 +0000
commit434862acb1ff1928922717c4e482b807293678b1 (patch)
tree62baff1b1dbba79db96267725231957b3918a5f7 /sys/vm/vm_page.c
parentd09cfd2724422ebbbf10e916f296b8f0ce4266c0 (diff)
downloadsrc-434862acb1ff1928922717c4e482b807293678b1.tar.gz
src-434862acb1ff1928922717c4e482b807293678b1.zip
Have vm_page_replace() assert that the new page is not enqueued.
The new page does not belong to a VM object, but the page daemon does not expect to encounter such pages. Reviewed by: alc, kib Tested by: pho MFC after: 1 week X-Differential Revision: https://reviews.freebsd.org/D14625
Notes
Notes: svn path=/head/; revision=331128
Diffstat (limited to 'sys/vm/vm_page.c')
-rw-r--r--sys/vm/vm_page.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index f55f111d703c..95af14d2074e 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -1505,7 +1505,9 @@ vm_page_replace(vm_page_t mnew, vm_object_t object, vm_pindex_t pindex)
VM_OBJECT_ASSERT_WLOCKED(object);
KASSERT(mnew->object == NULL,
- ("vm_page_replace: page already in object"));
+ ("vm_page_replace: page %p already in object", mnew));
+ KASSERT(mnew->queue == PQ_NONE,
+ ("vm_page_replace: new page %p is on a paging queue", mnew));
/*
* This function mostly follows vm_page_insert() and
@@ -1517,7 +1519,7 @@ vm_page_replace(vm_page_t mnew, vm_object_t object, vm_pindex_t pindex)
mnew->pindex = pindex;
mold = vm_radix_replace(&object->rtree, mnew);
KASSERT(mold->queue == PQ_NONE,
- ("vm_page_replace: mold is on a paging queue"));
+ ("vm_page_replace: old page %p is on a paging queue", mold));
/* Keep the resident page list in sorted order. */
TAILQ_INSERT_AFTER(&object->memq, mold, mnew, listq);