linuxkpi: use iterator in zap_vma_ptes

Change zap_vma_ptes() to use iterators, rather than TAILQ pointers.

Reviewed by:	kib
Differential Revision: https://reviews.freebsd.org/D49918
This commit is contained in:
Doug Moore 2025-04-19 17:31:29 -05:00
parent e1f3f15192
commit 97f3a1565d

View file

@ -59,6 +59,7 @@
#include <vm/vm_object.h>
#include <vm/vm_page.h>
#include <vm/vm_pager.h>
#include <vm/vm_radix.h>
#include <machine/stdarg.h>
@ -647,6 +648,7 @@ int
zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
unsigned long size)
{
struct pctrie_iter pages;
vm_object_t obj;
vm_page_t m;
@ -654,9 +656,8 @@ zap_vma_ptes(struct vm_area_struct *vma, unsigned long address,
if (obj == NULL || (obj->flags & OBJ_UNMANAGED) != 0)
return (-ENOTSUP);
VM_OBJECT_RLOCK(obj);
for (m = vm_page_find_least(obj, OFF_TO_IDX(address));
m != NULL && m->pindex < OFF_TO_IDX(address + size);
m = TAILQ_NEXT(m, listq))
vm_page_iter_limit_init(&pages, obj, OFF_TO_IDX(address + size));
VM_RADIX_FOREACH_FROM(m, &pages, OFF_TO_IDX(address))
pmap_remove_all(m);
VM_OBJECT_RUNLOCK(obj);
return (0);