Prechádzať zdrojové kódy

fix: __alloc_raw_page may return used page

greatbridf 2 rokov pred
rodič
commit
48c771e1c8
1 zmenil súbory, kde vykonal 3 pridanie a 9 odobranie
  1. 3 9
      src/kernel/mem.cpp

+ 3 - 9
src/kernel/mem.cpp

@@ -107,16 +107,10 @@ constexpr void free_addr_range(pptr_t start, pptr_t end)
 page_t __alloc_raw_page(void)
 {
     for (size_t i = 0; i < sizeof(mem_bitmap); ++i) {
-        if (mem_bitmap[i] == 0xff)
-            continue;
-
-        if (mem_bitmap[i] == (uint8_t)0xff) {
-            bm_set(mem_bitmap, i << 3);
-            return i << 3;
+        if (bm_test(mem_bitmap, i) == 0) {
+            bm_set(mem_bitmap, i);
+            return i;
         }
-
-        bm_set(mem_bitmap, (i << 3) + __builtin_ctz(~mem_bitmap[i]));
-        return (i << 3) + __builtin_ctz(~mem_bitmap[i]);
     }
     return -1;
 }