git: cf681286d295 - main - Revert "vm_fault: use iterator in populate()"

From: Doug Moore <dougm_at_FreeBSD.org>
Date: Fri, 25 Apr 2025 06:14:44 UTC
The branch main has been updated by dougm:

URL: https://cgit.FreeBSD.org/src/commit/?id=cf681286d29540a0aa1adf2cbc119e6f877de3dc

commit cf681286d29540a0aa1adf2cbc119e6f877de3dc
Author:     Doug Moore <dougm@FreeBSD.org>
AuthorDate: 2025-04-25 06:12:36 +0000
Commit:     Doug Moore <dougm@FreeBSD.org>
CommitDate: 2025-04-25 06:12:36 +0000

    Revert "vm_fault: use iterator in populate()"
    
    This reverts commit 925906a61cafb44df8643e33aa781ba546e92082.
    
    The effects of releasing and acquiring the object write lock
    a few lines into the loop were not carefully considered.
    
    Reported by: alc
---
 sys/vm/vm_fault.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 24fc457adcad..c096bfaffe73 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -497,7 +497,6 @@ vm_fault_populate_cleanup(vm_object_t object, vm_pindex_t first,
 static enum fault_status
 vm_fault_populate(struct faultstate *fs)
 {
-	struct pctrie_iter pages;
 	vm_offset_t vaddr;
 	vm_page_t m;
 	vm_pindex_t map_first, map_last, pager_first, pager_last, pidx;
@@ -624,10 +623,9 @@ vm_fault_populate(struct faultstate *fs)
 		    pager_last);
 		pager_last = map_last;
 	}
-	vm_page_iter_init(&pages, fs->first_object);
-	for (pidx = pager_first, m = vm_radix_iter_lookup(&pages, pidx);
+	for (pidx = pager_first, m = vm_page_lookup(fs->first_object, pidx);
 	    pidx <= pager_last;
-	    pidx += npages, m = vm_radix_iter_stride(&pages, npages)) {
+	    pidx += npages, m = TAILQ_NEXT(&m[npages - 1], listq)) {
 		vaddr = fs->entry->start + IDX_TO_OFF(pidx) - fs->entry->offset;
 		KASSERT(m != NULL && m->pindex == pidx,
 		    ("%s: pindex mismatch", __func__));