From 8b188a0ac46558d329423d1fa008f19e26f44df0 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sat, 21 Feb 2026 11:07:53 +0000 Subject: [PATCH] vm: region: fix iterator using wrong buffer offset when seek exceeds current buffer size --- vm/vm-region.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vm/vm-region.c b/vm/vm-region.c index b4ac9e6..0f135ac 100644 --- a/vm/vm-region.c +++ b/vm/vm-region.c @@ -545,8 +545,8 @@ static void vm_iterator_begin( buffer_size += vm_page_get_size_bytes(next); } - it->it_buf = buffer_base; - it->it_max = buffer_size; + it->it_buf = (char *)buffer_base + (object_offset & VM_PAGE_MASK); + it->it_max = buffer_size - (object_offset & VM_PAGE_MASK); } static kern_status_t vm_iterator_seek(struct vm_iterator *it, size_t nr_bytes) @@ -615,7 +615,7 @@ static kern_status_t vm_iterator_seek(struct vm_iterator *it, size_t nr_bytes) buffer_size += vm_page_get_size_bytes(next); } - it->it_buf = buffer_base; + it->it_buf = (char *)buffer_base + (object_offset & VM_PAGE_MASK); it->it_max = buffer_size; return KERN_OK; }