diff --git a/arch/x86/kernel/syscall.c b/arch/x86/kernel/syscall.c index a37b2d64..d6819a18 100644 --- a/arch/x86/kernel/syscall.c +++ b/arch/x86/kernel/syscall.c @@ -1434,9 +1434,8 @@ SYSCALL_DECLARE(mmap) goto out; } - if ((addr < region->user_start) - || (region->user_end <= addr) - || ((region->user_end - addr) < len)) { + if ((flags & MAP_FIXED) && ((addr < region->user_start) + || (region->user_end <= addr))) { ekprintf("sys_mmap(%lx,%lx,%x,%x,%x,%lx):ENOMEM\n", addr0, len0, prot, flags0, fd, off0); error = -ENOMEM;