浏览代码

Kernel: munmap() should round up to nearest page size, just like mmap().

The mismatch between the two was causing some trouble if you'd mmap e.g 1KB
and then try to munmap() it. The kernel would whine that it couldn't find
any such mapping (because mmap() actually rounded the 1KB to a 4KB page.)
Andreas Kling 6 年之前
父节点
当前提交
2dc0ef8813
共有 1 个文件被更改,包括 1 次插入0 次删除
  1. 1 0
      Kernel/Process.cpp

+ 1 - 0
Kernel/Process.cpp

@@ -134,6 +134,7 @@ bool Process::deallocate_region(Region& region)
 
 
 Region* Process::region_from_range(LinearAddress laddr, size_t size)
 Region* Process::region_from_range(LinearAddress laddr, size_t size)
 {
 {
+    size = PAGE_ROUND_UP(size);
     for (auto& region : m_regions) {
     for (auto& region : m_regions) {
         if (region->laddr() == laddr && region->size() == size)
         if (region->laddr() == laddr && region->size() == size)
             return region.ptr();
             return region.ptr();