:: commit 7f32fb591ba719bb98308c13818cc13d09b0b4d4

mintsuki <mintsuki@protonmail.com> — 2021-03-10 03:45

parents: 8bcbaa48c9

mtrr: Fix range overlap check

diff --git a/stage23/mm/mtrr.c b/stage23/mm/mtrr.c
index bcd24346..5d263e8f 100644
--- a/stage23/mm/mtrr.c
+++ b/stage23/mm/mtrr.c
@@ -20,10 +20,10 @@ static bool is_block_in_mtrr_range(struct mtrr *mtrr, uint64_t block_base, uint6
     if (!(mtrr->mask & (1 << 11)))
         return false;
 
-    uint64_t base = mtrr->base & ~(0xfff);
-    uint64_t mask = mtrr->mask & ~(0xfff);
+    uint64_t base = mtrr->base & ~((uint64_t)0xfff);
+    uint64_t mask = mtrr->mask & ~((uint64_t)0xfff);
 
-    for (uint64_t i = block_base; i < block_size; i += 4096) {
+    for (uint64_t i = block_base; i < block_base + block_size; i += 4096) {
         if ((i & mask) == (base & mask))
             return true;
     }
tab: 248 wrap: offon