diff --git a/kernel/src/sys/mmap.cpp b/kernel/src/sys/mmap.cpp index 10a2c088..d9a201b2 100644 --- a/kernel/src/sys/mmap.cpp +++ b/kernel/src/sys/mmap.cpp @@ -46,7 +46,7 @@ Result sys_mmap(Registers*, SyscallArgs args) else { if ((params.prot & PROT_WRITE) && !(description->flags & O_WRONLY)) return err(EACCES); - shmid = TRY(description->inode->query_shared_memory(params.offset, params.len)); + shmid = TRY(description->inode->query_shared_memory(params.offset, params.len / ARCH_PAGE_SIZE)); } shmem = g_shared_memory_map.try_get_ref(shmid); shmem->refs++; @@ -72,10 +72,10 @@ Result sys_mmap(Registers*, SyscallArgs args) if (params.prot == PROT_NONE) mmu_flags = MMU::NoExecute; #ifdef MMAP_DEBUG - kdbgln("mmap: mapping memory at %#lx, size=%zu", address, len); + kdbgln("mmap: mapping memory at %#lx, size=%zu", address, params.len); #endif - if (shmem) { TRY(shmem->map(address, mmu_flags, params.offset, get_blocks_from_size(params.len, ARCH_PAGE_SIZE))); } + if (shmem) { TRY(shmem->map(address, mmu_flags, params.offset, params.len / ARCH_PAGE_SIZE)); } else { TRY(MemoryManager::alloc_at_zeroed(address, get_blocks_from_size(params.len, ARCH_PAGE_SIZE), mmu_flags));