From: Giuseppe Cavallaro Date: Mon, 24 Aug 2009 09:59:09 +0000 (+0900) Subject: sh: fix sys_cacheflush error checking X-Git-Tag: v2.6.32-rc1~640^2~35^2~14^2~1 X-Git-Url: http://ftp.safe.ca/?a=commitdiff_plain;h=788e6af37a4ace8721eda72e4abe66fe0f6b49fd;hp=ffad9d7a54a5e809007135595c778715aa0fb07a;p=safe%2Fjmp%2Flinux-2.6 sh: fix sys_cacheflush error checking sys_cacheflush should return with EINVAL if the cache parameter is not one of ICACHE, DCACHE or BCACHE. So, we need to include 0 in the first check. It also adds the three definitions above as wrapper of the existent macros. PS: ltp cacheflush01 test now passes. Signed-off-by: Giuseppe Cavallaro Signed-off-by: Stuart Menefy Signed-off-by: Paul Mundt --- diff --git a/arch/sh/include/asm/cachectl.h b/arch/sh/include/asm/cachectl.h index 305dd70..6ffb4b7 100644 --- a/arch/sh/include/asm/cachectl.h +++ b/arch/sh/include/asm/cachectl.h @@ -9,4 +9,11 @@ #define CACHEFLUSH_I 0x4 +/* + * Options for cacheflush system call + */ +#define ICACHE CACHEFLUSH_I /* flush instruction cache */ +#define DCACHE CACHEFLUSH_D_PURGE /* writeback and flush data cache */ +#define BCACHE (ICACHE|DCACHE) /* flush both caches */ + #endif /* _SH_CACHECTL_H */ diff --git a/arch/sh/kernel/sys_sh.c b/arch/sh/kernel/sys_sh.c index ec65dd8..8aa5d1c 100644 --- a/arch/sh/kernel/sys_sh.c +++ b/arch/sh/kernel/sys_sh.c @@ -186,7 +186,7 @@ asmlinkage int sys_cacheflush(unsigned long addr, unsigned long len, int op) { struct vm_area_struct *vma; - if ((op < 0) || (op > (CACHEFLUSH_D_PURGE|CACHEFLUSH_I))) + if ((op <= 0) || (op > (CACHEFLUSH_D_PURGE|CACHEFLUSH_I))) return -EINVAL; /*