From fa9f4baeecd1e18fc2db9192660d0de5d8b54e8c Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Thu, 1 May 2025 19:52:41 -0400 Subject: FUCKING OFF BY ONE ERRORS --- kernel/lib/kalloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/lib/kalloc.c b/kernel/lib/kalloc.c index 0141149..02e9457 100644 --- a/kernel/lib/kalloc.c +++ b/kernel/lib/kalloc.c @@ -34,7 +34,7 @@ static struct page_header *get_header(void *ptr) static void *alloc_new(size_t size) { - size_t pages = ((size + header_len) / PAGE_SIZE) + 1; + size_t pages = ((size + header_len + PAGE_SIZE - 1) / PAGE_SIZE) * PAGE_SIZE; void *addr = kalloc_pages(pages); void *mem = (char *)addr + header_len; @@ -180,7 +180,7 @@ void kfree(void *ptr) for (neighbor = header->prev; neighbor != NULL; neighbor = neighbor->prev) { if (neighbor->node_number != header->node_number) break; - if (neighbor->used && header->used) + if (neighbor->used || header->used) break; neighbor->free += header->free + header_len; neighbor->next = header->next; -- cgit v1.2.3-freya