From 1a3bc851af6effdafa1def18e0af26ddb85befb5 Mon Sep 17 00:00:00 2001 From: NAKAMURA Gou Date: Tue, 15 Mar 2016 13:54:42 +0900 Subject: [PATCH] mprotect: return -ENOMEM if speicified range is out of range --- kernel/syscall.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/kernel/syscall.c b/kernel/syscall.c index 83cf4193..efbc0dbf 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -1228,16 +1228,20 @@ SYSCALL_DECLARE(mprotect) end = start + len; /* check arguments */ - if ((start & (PAGE_SIZE - 1)) - || (start < region->user_start) - || (region->user_end <= start) - || (len > (region->user_end - region->user_start) - || ((region->user_end - len) < start))) { + if (start & (PAGE_SIZE - 1)) { ekprintf("[%d]sys_mprotect(%lx,%lx,%x): -EINVAL\n", ihk_mc_get_processor_id(), start, len0, prot); return -EINVAL; } + if ((start < region->user_start) + || (region->user_end <= start) + || ((region->user_end - start) < len)) { + ekprintf("[%d]sys_mprotect(%lx,%lx,%x): -ENOMEM\n", + ihk_mc_get_processor_id(), start, len0, prot); + return -ENOMEM; + } + if (len == 0) { /* nothing to do */ return 0;