Here's a simple diff to add some more sanity checks in uvm_pagelookup(). Nothing fancy, it helps documenting the flags and reduce the difference with NetBSD. This is part of my on-going work on UVM.
ok? Index: uvm/uvm_page.c =================================================================== RCS file: /cvs/src/sys/uvm/uvm_page.c,v retrieving revision 1.172 diff -u -p -r1.172 uvm_page.c --- uvm/uvm_page.c 13 May 2023 09:24:59 -0000 1.172 +++ uvm/uvm_page.c 11 Aug 2023 17:55:43 -0000 @@ -1219,10 +1219,16 @@ struct vm_page * uvm_pagelookup(struct uvm_object *obj, voff_t off) { /* XXX if stack is too much, handroll */ - struct vm_page pg; + struct vm_page p, *pg; + + p.offset = off; + pg = RBT_FIND(uvm_objtree, &obj->memt, &p); + + KASSERT(pg == NULL || obj->uo_npages != 0); + KASSERT(pg == NULL || (pg->pg_flags & PG_RELEASED) == 0 || + (pg->pg_flags & PG_BUSY) != 0); + return (pg); - pg.offset = off; - return RBT_FIND(uvm_objtree, &obj->memt, &pg); } /*