lkml.org 
[lkml]   [2018]   [Oct]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.18 132/135] mm/thp: fix call to mmu_notifier in set_pmd_migration_entry() v2
    Date
    4.18-stable review patch.  If anyone has any objections, please let me know.

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

    From: Jérôme Glisse <jglisse@redhat.com>

    commit bfba8e5cf28f413aa05571af493871d74438979f upstream.

    Inside set_pmd_migration_entry() we are holding page table locks and thus
    we can not sleep so we can not call invalidate_range_start/end()

    So remove call to mmu_notifier_invalidate_range_start/end() because they
    are call inside the function calling set_pmd_migration_entry() (see
    try_to_unmap_one()).

    Link: http://lkml.kernel.org/r/20181012181056.7864-1-jglisse@redhat.com
    Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
    Reported-by: Andrea Arcangeli <aarcange@redhat.com>
    Reviewed-by: Zi Yan <zi.yan@cs.rutgers.edu>
    Acked-by: Michal Hocko <mhocko@kernel.org>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Anshuman Khandual <khandual@linux.vnet.ibm.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: David Nellans <dnellans@nvidia.com>
    Cc: Ingo Molnar <mingo@elte.hu>
    Cc: Mel Gorman <mgorman@techsingularity.net>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    mm/huge_memory.c | 6 ------
    1 file changed, 6 deletions(-)

    --- a/mm/huge_memory.c
    +++ b/mm/huge_memory.c
    @@ -2883,9 +2883,6 @@ void set_pmd_migration_entry(struct page
    if (!(pvmw->pmd && !pvmw->pte))
    return;

    - mmu_notifier_invalidate_range_start(mm, address,
    - address + HPAGE_PMD_SIZE);
    -
    flush_cache_range(vma, address, address + HPAGE_PMD_SIZE);
    pmdval = *pvmw->pmd;
    pmdp_invalidate(vma, address, pvmw->pmd);
    @@ -2898,9 +2895,6 @@ void set_pmd_migration_entry(struct page
    set_pmd_at(mm, address, pvmw->pmd, pmdswp);
    page_remove_rmap(page, true);
    put_page(page);
    -
    - mmu_notifier_invalidate_range_end(mm, address,
    - address + HPAGE_PMD_SIZE);
    }

    void remove_migration_pmd(struct page_vma_mapped_walk *pvmw, struct page *new)

    \
     
     \ /
      Last update: 2018-10-16 19:40    [W:3.186 / U:0.420 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site