arm64: hugetlb: Fix huge_pte_offset to return poisoned page table entries
authorPunit Agrawal <punit.agrawal@arm.com>
Thu, 8 Jun 2017 17:25:26 +0000 (18:25 +0100)
committerWill Deacon <will.deacon@arm.com>
Mon, 12 Jun 2017 15:04:28 +0000 (16:04 +0100)
commitf02ab08afbe76ee7b0b2a34a9970e7dd200d8b01
tree03640d83e1c6c1614ef4eafcb121641299896d24
parent687644209a6e95576ea453977b26dbd6248cadda
arm64: hugetlb: Fix huge_pte_offset to return poisoned page table entries

When memory failure is enabled, a poisoned hugepage pte is marked as a
swap entry. huge_pte_offset() does not return the poisoned page table
entries when it encounters PUD/PMD hugepages.

This behaviour of huge_pte_offset() leads to error such as below when
munmap is called on poisoned hugepages.

[  344.165544] mm/pgtable-generic.c:33: bad pmd 000000083af00074.

Fix huge_pte_offset() to return the poisoned pte which is then
appropriately handled by the generic layer code.

Signed-off-by: Punit Agrawal <punit.agrawal@arm.com>
Acked-by: Steve Capper <steve.capper@arm.com>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: David Woods <dwoods@mellanox.com>
Tested-by: Manoj Iyer <manoj.iyer@canonical.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/include/asm/pgtable.h
arch/arm64/mm/hugetlbpage.c