lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 780/800] csky: syscache: Fixup duplicate cache flush
    Date
    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


    \
     
     \ /
      Last update: 2021-07-12 11:09    [W:2.498 / U:0.248 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site