lkml.org 
[lkml]   [2014]   [Jan]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.11 093/208] ARM: 7923/1: mm: fix dcache flush logic for compound high pages
    Date
    3.11.10.3 -stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Steven Capper <steve.capper@linaro.org>

    commit 2a7cfcbc0553365d75716f69ee7b704cac7c9248 upstream.

    When given a compound high page, __flush_dcache_page will only flush
    the first page of the compound page repeatedly rather than the entire
    set of constituent pages.

    This error was introduced by:
    0b19f93 ARM: mm: Add support for flushing HugeTLB pages.

    This patch corrects the logic such that all constituent pages are now
    flushed.

    Signed-off-by: Steve Capper <steve.capper@linaro.org>
    Acked-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
    Signed-off-by: Luis Henriques <luis.henriques@canonical.com>
    ---
    arch/arm/mm/flush.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c
    index 6d5ba9a..3387e60 100644
    --- a/arch/arm/mm/flush.c
    +++ b/arch/arm/mm/flush.c
    @@ -175,16 +175,16 @@ void __flush_dcache_page(struct address_space *mapping, struct page *page)
    unsigned long i;
    if (cache_is_vipt_nonaliasing()) {
    for (i = 0; i < (1 << compound_order(page)); i++) {
    - void *addr = kmap_atomic(page);
    + void *addr = kmap_atomic(page + i);
    __cpuc_flush_dcache_area(addr, PAGE_SIZE);
    kunmap_atomic(addr);
    }
    } else {
    for (i = 0; i < (1 << compound_order(page)); i++) {
    - void *addr = kmap_high_get(page);
    + void *addr = kmap_high_get(page + i);
    if (addr) {
    __cpuc_flush_dcache_area(addr, PAGE_SIZE);
    - kunmap_high(page);
    + kunmap_high(page + i);
    }
    }
    }
    --
    1.8.3.2


    \
     
     \ /
      Last update: 2014-01-13 20:41    [W:4.719 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site