From edca64134a9873f32379b2b83bd925ecca1c19b1 Mon Sep 17 00:00:00 2001 From: Anton Kling Date: Sat, 12 Oct 2024 16:24:32 +0200 Subject: Kernel/MMU: Don't return non present pages unless creation is desired `get_page` is a horrible multipurpose function and at this point I am unsure what behavior I expect and have expected it to produce. Refactor should probably be done soon. --- kernel/arch/i386/mmu.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'kernel/arch') diff --git a/kernel/arch/i386/mmu.c b/kernel/arch/i386/mmu.c index c38d834..a59eccf 100644 --- a/kernel/arch/i386/mmu.c +++ b/kernel/arch/i386/mmu.c @@ -127,6 +127,9 @@ Page *get_page(void *ptr, PageDirectory *directory, int create_new_page, } } Page *p = &directory->tables[table_index]->pages[address % 1024]; + if (!p->present && !create_new_page) { + return 0; + } if (create_new_page) { p->present = 0; p->user = set_user; -- cgit v1.2.3