From bd6a2c23119e3009f6f950ebbdb45351e946c013 Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Thu, 18 Aug 2016 07:32:31 +0900 Subject: [PATCH] sys_mmap(): correct initial address check --- arch/x86/kernel/syscall.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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;