| From 539994d82a72968ace4dc15d235a8dc901f3d239 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 4 May 2021 14:08:44 +0800 |
| Subject: csky: syscache: Fixup duplicate cache flush |
| |
| From: Guo Ren <guoren@linux.alibaba.com> |
| |
| [ Upstream commit 6ea42c84f33368eb3fe1ec1bff8d7cb1a5c7b07a ] |
| |
| 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> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/csky/mm/syscache.c | 12 +++++++----- |
| 1 file changed, 7 insertions(+), 5 deletions(-) |
| |
| diff --git a/arch/csky/mm/syscache.c b/arch/csky/mm/syscache.c |
| index 4e51d63850c4..cd847ad62c7e 100644 |
| --- a/arch/csky/mm/syscache.c |
| +++ b/arch/csky/mm/syscache.c |
| @@ -12,15 +12,17 @@ SYSCALL_DEFINE3(cacheflush, |
| int, cache) |
| { |
| switch (cache) { |
| - case ICACHE: |
| case BCACHE: |
| - flush_icache_mm_range(current->mm, |
| - (unsigned long)addr, |
| - (unsigned long)addr + bytes); |
| - fallthrough; |
| case DCACHE: |
| dcache_wb_range((unsigned long)addr, |
| (unsigned long)addr + bytes); |
| + if (cache != BCACHE) |
| + break; |
| + fallthrough; |
| + case ICACHE: |
| + flush_icache_mm_range(current->mm, |
| + (unsigned long)addr, |
| + (unsigned long)addr + bytes); |
| break; |
| default: |
| return -EINVAL; |
| -- |
| 2.30.2 |
| |