An object lock can be released and reacquired without resetting the iterator in the vm_fault code. Between an iter_lookup call in vm_fault_object and page_alloc_after call in vm_fault_allocate, there is a call to vm_fault_populate in vm_fault_allocate that leads to functions that release and reacquire the object write lock. So, if vm_fault_populate is called and allocation is likely to follow, reset the iterator.
No tests have failed on account of this, as far as I know, but it is a bug that ought to be addressed promptly.