diff options
Diffstat (limited to 'arch/sh/kernel/sys_sh.c')
| -rw-r--r-- | arch/sh/kernel/sys_sh.c | 9 | 
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/sh/kernel/sys_sh.c b/arch/sh/kernel/sys_sh.c index 58dfc02c7af..e3a7e36639e 100644 --- a/arch/sh/kernel/sys_sh.c +++ b/arch/sh/kernel/sys_sh.c @@ -63,6 +63,15 @@ asmlinkage long sys_mmap2(unsigned long addr, unsigned long len,  	unsigned long prot, unsigned long flags,  	unsigned long fd, unsigned long pgoff)  { +	/* +	 * The shift for mmap2 is constant, regardless of PAGE_SIZE +	 * setting. +	 */ +	if (pgoff & ((1 << (PAGE_SHIFT - 12)) - 1)) +		return -EINVAL; + +	pgoff >>= PAGE_SHIFT - 12; +  	return do_mmap2(addr, len, prot, flags, fd, pgoff);  }  |