Forráskód Böngészése

fix(mmap): read mapped data from file[offset]

greatbridf 2 éve
szülő
commit
ad07d066eb
2 módosított fájl, 3 hozzáadás és 3 törlés
  1. 2 2
      src/kernel/interrupt.cpp
  2. 1 1
      src/kernel/mem.cpp

+ 2 - 2
src/kernel/interrupt.cpp

@@ -214,8 +214,8 @@ extern "C" void int14_handler(int14_data* d)
 
         // memory mapped
         if (d->error_code.present == 0) {
-            size_t offset = d->l_addr - mm_area->start;
-            vfs_read(mm_area->mapped_file, new_page_data, 4096, mm_area->file_offset + offset, PAGE_SIZE);
+            size_t offset = (d->l_addr - mm_area->start) & 0xfffff000;
+            vfs_read(mm_area->mapped_file, new_page_data, PAGE_SIZE, mm_area->file_offset + offset, PAGE_SIZE);
         }
     }
 }

+ 1 - 1
src/kernel/mem.cpp

@@ -481,7 +481,7 @@ static inline int _mmap(
     int write,
     int priv)
 {
-    if (!file->flags.file) {
+    if (!file->flags.in.file && !file->flags.in.special_node) {
         errno = EINVAL;
         return GB_FAILED;
     }