]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
sh: fix sys_cacheflush error checking
authorGiuseppe Cavallaro <peppe.cavallaro@st.com>
Mon, 24 Aug 2009 09:59:09 +0000 (18:59 +0900)
committerPaul Mundt <lethal@linux-sh.org>
Mon, 24 Aug 2009 09:59:09 +0000 (18:59 +0900)
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 <peppe.cavallaro@st.com>
Signed-off-by: Stuart Menefy <stuart.menefy@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/sh/include/asm/cachectl.h
arch/sh/kernel/sys_sh.c

index 305dd7082a6670b9e8b50ae0be97b900a75d7795..6ffb4b7a212e5b39101fac128a2d9c6bc1c70311 100644 (file)
@@ -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 */
index ec65dd8842b16ff9b844795abd20679c2a1c03f7..8aa5d1ceaf14b225934d4ec8e0860bbfcdf298ef 100644 (file)
@@ -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;
 
        /*