ARM: 8578/1: mm: ensure pmd_present only checks the valid bit
authorWill Deacon <will.deacon@arm.com>
Tue, 7 Jun 2016 16:57:54 +0000 (17:57 +0100)
committerRussell King <rmk+kernel@armlinux.org.uk>
Thu, 9 Jun 2016 16:51:47 +0000 (17:51 +0100)
commit624531886987f0f1b5d01fb598034d039198e090
tree540802405c84de4a0578bbbb8c4e40a407ad2469
parentaf8c34ce6ae32addda3788d54a7e340cad22516b
ARM: 8578/1: mm: ensure pmd_present only checks the valid bit

In a subsequent patch, pmd_mknotpresent will clear the valid bit of the
pmd entry, resulting in a not-present entry from the hardware's
perspective. Unfortunately, pmd_present simply checks for a non-zero pmd
value and will therefore continue to return true even after a
pmd_mknotpresent operation. Since pmd_mknotpresent is only used for
managing huge entries, this is only an issue for the 3-level case.

This patch fixes the 3-level pmd_present implementation to take into
account the valid bit. For bisectability, the change is made before the
fix to pmd_mknotpresent.

[catalin.marinas@arm.com: comment update regarding pmd_mknotpresent patch]

Fixes: 8d9625070073 ("ARM: mm: Transparent huge page support for LPAE systems.")
Cc: <stable@vger.kernel.org> # 3.11+
Cc: Russell King <linux@armlinux.org.uk>
Cc: Steve Capper <Steve.Capper@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/include/asm/pgtable-2level.h
arch/arm/include/asm/pgtable-3level.h
arch/arm/include/asm/pgtable.h