mm/memory_failure: fix the missing pte_unmap() call

The paired pte_unmap() call is missing before the
dev_pagemap_mapping_shift() returns. So fix it.

David says:
"I guess this code never runs on 32bit / highmem, that's why we didn't
notice so far".

[akpm@linux-foundation.org: cleanup]

Link: https://lkml.kernel.org/r/20210923122642.4999-1-zhengqi.arch@bytedance.com
Signed-off-by: Qi Zheng <zhengqi.arch@bytedance.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Cc: Naoya Horiguchi <naoya.horiguchi@nec.com>
Cc: Muchun Song <songmuchun@bytedance.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by Qi Zheng and committed by Linus Torvalds 5c91c0e7 19532869

+5 -5
+5 -5
mm/memory-failure.c
··· 306 struct vm_area_struct *vma) 307 { 308 unsigned long address = vma_address(page, vma); 309 pgd_t *pgd; 310 p4d_t *p4d; 311 pud_t *pud; ··· 330 if (pmd_devmap(*pmd)) 331 return PMD_SHIFT; 332 pte = pte_offset_map(pmd, address); 333 - if (!pte_present(*pte)) 334 - return 0; 335 - if (pte_devmap(*pte)) 336 - return PAGE_SHIFT; 337 - return 0; 338 } 339 340 /*
··· 306 struct vm_area_struct *vma) 307 { 308 unsigned long address = vma_address(page, vma); 309 + unsigned long ret = 0; 310 pgd_t *pgd; 311 p4d_t *p4d; 312 pud_t *pud; ··· 329 if (pmd_devmap(*pmd)) 330 return PMD_SHIFT; 331 pte = pte_offset_map(pmd, address); 332 + if (pte_present(*pte) && pte_devmap(*pte)) 333 + ret = PAGE_SHIFT; 334 + pte_unmap(pte); 335 + return ret; 336 } 337 338 /*