From eb675818c7e1ef7c50d5fd7232b0bf731d01ffb9 Mon Sep 17 00:00:00 2001 From: Dominique Martinet Date: Fri, 13 Jul 2018 15:43:40 +0900 Subject: [PATCH] x86 mmap: fix out of bounds shift 0x3F << MAP_HUGE_SHIFT is too big to fit in signed int, make it unsigned Change-Id: I0e476b80ff51a8e141c90da6f985ba18a3438752 --- arch/x86_64/kernel/syscall.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86_64/kernel/syscall.c b/arch/x86_64/kernel/syscall.c index 42d27c79..4ff0e6ef 100644 --- a/arch/x86_64/kernel/syscall.c +++ b/arch/x86_64/kernel/syscall.c @@ -1471,7 +1471,7 @@ set_signal(int sig, void *regs0, siginfo_t *info) SYSCALL_DECLARE(mmap) { - const int supported_flags = 0 + const unsigned int supported_flags = 0 | MAP_SHARED // 01 | MAP_PRIVATE // 02 | MAP_FIXED // 10 @@ -1479,7 +1479,7 @@ SYSCALL_DECLARE(mmap) | MAP_LOCKED // 2000 | MAP_POPULATE // 8000 | MAP_HUGETLB // 00040000 - | (0x3F << MAP_HUGE_SHIFT) // FC000000 + | (0x3FU << MAP_HUGE_SHIFT) // FC000000 ; const int ignored_flags = 0 #ifdef USE_NOCACHE_MMAP