ChangeSet 1.2231.1.89, 2005/03/28 19:41:15-08:00, [EMAIL PROTECTED] [PATCH] x86_64: hugetlb fix x86-64 may have to allocate a bunch of upper levels of pagetables, and those allocations may fail. When they do, unmap_hugepage_range() needs to be able to clean up after them. Acked-by: William Lee Irwin III <[EMAIL PROTECTED]> Cc: Andi Kleen <[EMAIL PROTECTED]> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
hugetlbpage.c | 7 +++++-- 1 files changed, 5 insertions(+), 2 deletions(-) diff -Nru a/arch/i386/mm/hugetlbpage.c b/arch/i386/mm/hugetlbpage.c --- a/arch/i386/mm/hugetlbpage.c 2005-03-28 21:26:05 -08:00 +++ b/arch/i386/mm/hugetlbpage.c 2005-03-28 21:26:05 -08:00 @@ -209,14 +209,17 @@ { struct mm_struct *mm = vma->vm_mm; unsigned long address; - pte_t pte; + pte_t pte, *ptep; struct page *page; BUG_ON(start & (HPAGE_SIZE - 1)); BUG_ON(end & (HPAGE_SIZE - 1)); for (address = start; address < end; address += HPAGE_SIZE) { - pte = ptep_get_and_clear(mm, address, huge_pte_offset(mm, address)); + ptep = huge_pte_offset(mm, address); + if (!ptep) + continue; + pte = ptep_get_and_clear(mm, address, ptep); if (pte_none(pte)) continue; page = pte_page(pte); - To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html