lkml.org 
[lkml]   [2016]   [Jul]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.6 098/203] arm64: mm: remove page_mapping check in __sync_icache_dcache
    Date
    4.6-stable review patch.  If anyone has any objections, please let me know.

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

    From: Shaokun Zhang <zhangshaokun@hisilicon.com>

    commit 20c27a4270c775d7ed661491af8ac03264d60fc6 upstream.

    __sync_icache_dcache unconditionally skips the cache maintenance for
    anonymous pages, under the assumption that flushing is only required in
    the presence of D-side aliases [see 7249b79f6b4cc ("arm64: Do not flush
    the D-cache for anonymous pages")].

    Unfortunately, this breaks migration of anonymous pages holding
    self-modifying code, where userspace cannot be reasonably expected to
    reissue maintenance instructions in response to a migration.

    This patch fixes the problem by removing the broken page_mapping(page)
    check from the cache syncing code, otherwise we may end up fetching and
    executing stale instructions from the PoU.

    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com>
    Signed-off-by: Will Deacon <will.deacon@arm.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    arch/arm64/mm/flush.c | 4 ----
    1 file changed, 4 deletions(-)

    --- a/arch/arm64/mm/flush.c
    +++ b/arch/arm64/mm/flush.c
    @@ -71,10 +71,6 @@ void __sync_icache_dcache(pte_t pte, uns
    {
    struct page *page = pte_page(pte);

    - /* no flushing needed for anonymous pages */
    - if (!page_mapping(page))
    - return;
    -
    if (!test_and_set_bit(PG_dcache_clean, &page->flags))
    sync_icache_aliases(page_address(page),
    PAGE_SIZE << compound_order(page));

    \
     
     \ /
      Last update: 2016-07-26 00:01    [W:4.052 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site