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

csky: syscache: Fixup duplicate cache flush

The current csky logic of sys_cacheflush is wrong, it'll cause
icache flush call dcache flush again. Now fixup it with a
conditional "break & fallthrough".

Fixes: 997153b9a75c ("csky: Add flush_icache_mm to defer flush icache all")
Fixes: 0679d29d3e23 ("csky: fix syscache.c fallthrough warning")
Acked-by: Randy Dunlap <rdunlap@infradead.org>
Co-Developed-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: Guo Ren <guoren@linux.alibaba.com>
Cc: Arnd Bergmann <arnd@arndb.de>

Guo Ren 6ea42c84 13311e74

+7 -5
+7 -5
arch/csky/mm/syscache.c
··· 12 12 int, cache) 13 13 { 14 14 switch (cache) { 15 - case ICACHE: 16 15 case BCACHE: 17 - flush_icache_mm_range(current->mm, 18 - (unsigned long)addr, 19 - (unsigned long)addr + bytes); 20 - fallthrough; 21 16 case DCACHE: 22 17 dcache_wb_range((unsigned long)addr, 18 + (unsigned long)addr + bytes); 19 + if (cache != BCACHE) 20 + break; 21 + fallthrough; 22 + case ICACHE: 23 + flush_icache_mm_range(current->mm, 24 + (unsigned long)addr, 23 25 (unsigned long)addr + bytes); 24 26 break; 25 27 default: