lkml.org 
[lkml]   [2017]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    The function assumes that each PMD points to head of a
    huge page. This is not correct as a PMD can point to
    start of any 8M region with a, say 256M, hugepage. The
    fix ensures that it points to the correct head of any PMD
    huge page.

    Signed-off-by: Nitin Gupta <nitin.m.gupta@oracle.com>
    ---
    arch/sparc/mm/gup.c | 2 ++
    1 file changed, 2 insertions(+)

    diff --git a/arch/sparc/mm/gup.c b/arch/sparc/mm/gup.c
    index cd0e32b..9116a6f 100644
    --- a/arch/sparc/mm/gup.c
    +++ b/arch/sparc/mm/gup.c
    @@ -80,6 +80,8 @@ static int gup_huge_pmd(pmd_t *pmdp, pmd_t pmd, unsigned long addr,
    refs = 0;
    head = pmd_page(pmd);
    page = head + ((addr & ~PMD_MASK) >> PAGE_SHIFT);
    + if (PageTail(head))
    + head = compound_head(head);
    do {
    VM_BUG_ON(compound_head(page) != head);
    pages[*nr] = page;
    --
    2.9.2
    \
     
     \ /
      Last update: 2017-06-22 19:59    [W:4.036 / U:0.316 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site