Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <peppe.cavallaro@st.com>
Signed-off-by: Stuart Menefy <stuart.menefy@st.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>

authored by

Giuseppe Cavallaro and committed by
Paul Mundt
788e6af3 ffad9d7a

+8 -1
+7
arch/sh/include/asm/cachectl.h
··· 9 9 10 10 #define CACHEFLUSH_I 0x4 11 11 12 + /* 13 + * Options for cacheflush system call 14 + */ 15 + #define ICACHE CACHEFLUSH_I /* flush instruction cache */ 16 + #define DCACHE CACHEFLUSH_D_PURGE /* writeback and flush data cache */ 17 + #define BCACHE (ICACHE|DCACHE) /* flush both caches */ 18 + 12 19 #endif /* _SH_CACHECTL_H */
+1 -1
arch/sh/kernel/sys_sh.c
··· 186 186 { 187 187 struct vm_area_struct *vma; 188 188 189 - if ((op < 0) || (op > (CACHEFLUSH_D_PURGE|CACHEFLUSH_I))) 189 + if ((op <= 0) || (op > (CACHEFLUSH_D_PURGE|CACHEFLUSH_I))) 190 190 return -EINVAL; 191 191 192 192 /*