git: 0f9b73ffa50d - main - vm_fault: reset iterator after vm_fault_populate()

From: Doug Moore <dougm_at_FreeBSD.org>
Date: Thu, 24 Apr 2025 22:23:44 UTC
The branch main has been updated by dougm:

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

commit 0f9b73ffa50d359aedf8afdbb76e2795dbb9906d
Author:     Doug Moore <dougm@FreeBSD.org>
AuthorDate: 2025-04-24 22:18:12 +0000
Commit:     Doug Moore <dougm@FreeBSD.org>
CommitDate: 2025-04-24 22:23:26 +0000

    vm_fault: reset iterator after vm_fault_populate()
    
    Add a call to pctrie_iter_reset after vm_fault_allocate returns to
    vm_fault_allocate, since the iterator may be corrupted.
    
    Reviewed by:    kib
    Differential Revision:  https://reviews.freebsd.org/D49957
---
 sys/vm/vm_fault.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/sys/vm/vm_fault.c b/sys/vm/vm_fault.c
index 5d21ad58f780..c096bfaffe73 100644
--- a/sys/vm/vm_fault.c
+++ b/sys/vm/vm_fault.c
@@ -1258,6 +1258,7 @@ vm_fault_allocate(struct faultstate *fs, struct pctrie_iter *pages)
 			vm_fault_unlock_and_deallocate(fs);
 			return (res);
 		case FAULT_CONTINUE:
+			pctrie_iter_reset(pages);
 			/*
 			 * Pager's populate() method
 			 * returned VM_PAGER_BAD.