From 335bc01185ead72638de4b209b0188981b5de889 Mon Sep 17 00:00:00 2001 From: "Justin C. Miller" Date: Fri, 5 Feb 2021 23:47:29 -0800 Subject: [PATCH] [kernel] Fix page_tree growth bug The logic was inverted in contains(), meaning that new parents were never being created, and the same level-0 block was just getting reused. --- src/kernel/page_tree.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kernel/page_tree.cpp b/src/kernel/page_tree.cpp index c1827d4..7a9b47b 100644 --- a/src/kernel/page_tree.cpp +++ b/src/kernel/page_tree.cpp @@ -44,7 +44,7 @@ inline bool contains(uint64_t page_off, uint64_t word, uint8_t &index) { uint64_t base = to_base(word); uint64_t bits = to_level(word) * bits_per_level; index = (page_off >> bits) & 0x3f; - return (page_off & (~0x3full << bits)) != base; + return (page_off & (~0x3full << bits)) == base; } inline uint64_t index_for(uint64_t page_off, uint8_t level) {