• David Gibson's avatar
    [PATCH] hugepage: Fix hugepage logic in free_pgtables() harder · 4866920b
    David Gibson authored
    Turns out the hugepage logic in free_pgtables() was doubly broken.  The
    loop coalescing multiple normal page VMAs into one call to free_pgd_range()
    had an off by one error, which could mean it would coalesce one hugepage
    VMA into the same bundle (checking 'vma' not 'next' in the loop).  I
    transferred this bug into the new is_vm_hugetlb_page() based version.
    Here's the fix.
    
    This one didn't bite on powerpc previously for the same reason the
    is_hugepage_only_range() problem didn't: powerpc's hugetlb_free_pgd_range()
    is identical to free_pgd_range().  It didn't bite on ia64 because the
    hugepage region is distant enough from any other region that the separated
    PMD_SIZE distance test would always prevent coalescing the two together.
    
    No libhugetlbfs testsuite regressions (ppc64, POWER5).
    Signed-off-by: default avatarDavid Gibson <dwg@au1.ibm.com>
    Cc: William Lee Irwin III <wli@holomorphy.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    4866920b
memory.c 64.7 KB