From de54054142f125fc5874989fe27fc95251134d18 Mon Sep 17 00:00:00 2001 From: Matheus Date: Mon, 11 May 2026 01:24:38 -0300 Subject: [PATCH] iovec: fix page_remaining --- kernel-src/io/iovec.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kernel-src/io/iovec.c b/kernel-src/io/iovec.c index 362678ef..c0f5e52c 100644 --- a/kernel-src/io/iovec.c +++ b/kernel-src/io/iovec.c @@ -7,6 +7,7 @@ static inline bool iovec_iterator_finished(iovec_iterator_t *iovec_iterator) { } bool iovec_user_check(iovec_t *iovec, size_t count) { + // TODO add size overflow check for (int i = 0; i < count; ++i) { // POSIX says that when len is zero, the addr can be an invalid buffer if (iovec[i].len && IS_USER_ADDRESS(iovec[i].addr) == false) @@ -250,7 +251,7 @@ int iovec_iterator_next_page(iovec_iterator_t *iovec_iterator, size_t *page_offs return EFAULT; *page_offset = offset_in_page; - *page_remaining = min(PAGE_SIZE, remaining); + *page_remaining = min(PAGE_SIZE - offset_in_page, remaining); *page = phys; iovec_iterator_skip(iovec_iterator, *page_remaining); return 0;