diff options
author | Mark Johnston <markj@FreeBSD.org> | 2018-03-18 16:35:40 +0000 |
---|---|---|
committer | Mark Johnston <markj@FreeBSD.org> | 2018-03-18 16:35:40 +0000 |
commit | 434862acb1ff1928922717c4e482b807293678b1 (patch) | |
tree | 62baff1b1dbba79db96267725231957b3918a5f7 /sys/vm/vm_page.c | |
parent | d09cfd2724422ebbbf10e916f296b8f0ce4266c0 (diff) | |
download | src-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.c | 6 |
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); |