X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=mm%2Fmemory.c;h=48c122d42ed743dcc90178170b4aff380ec3ad8c;hb=a85591fd0baf4ed3f03ee1aaac6a985e400cf089;hp=bbab1e37055e22df235af61ddd201fe4b9832283;hpb=2c4aabcca847ac4c92aa5e960c3f6053e1051b62;p=linux-2.6 diff --git a/mm/memory.c b/mm/memory.c index bbab1e3705..48c122d42e 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -969,7 +969,7 @@ struct page *follow_page(struct vm_area_struct *vma, unsigned long address, goto no_page_table; pmd = pmd_offset(pud, address); - if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd))) + if (pmd_none(*pmd)) goto no_page_table; if (pmd_huge(*pmd)) { @@ -978,6 +978,9 @@ struct page *follow_page(struct vm_area_struct *vma, unsigned long address, goto out; } + if (unlikely(pmd_bad(*pmd))) + goto no_page_table; + ptep = pte_offset_map_lock(mm, pmd, address, &ptl); if (!ptep) goto out;