powerpc/64s: __find_linux_pte() synchronization vs pmdp_invalidate()
authorNicholas Piggin <npiggin@gmail.com>
Fri, 7 Jun 2019 03:56:36 +0000 (13:56 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 7 Jun 2019 06:28:28 +0000 (16:28 +1000)
commita00196a272161338d4b1d66ec69e3d57c6b280e0
tree8c1b21d16a2fede66919f4809292087fde2a3215
parent33258a1db165cf43a9e6382587ad06e9b7f8187c
powerpc/64s: __find_linux_pte() synchronization vs pmdp_invalidate()

The change to pmdp_invalidate() to mark the pmd with _PAGE_INVALID
broke the synchronisation against lock free lookups,
__find_linux_pte()'s pmd_none() check no longer returns true for such
cases.

Fix this by adding a check for this condition as well.

Fixes: da7ad366b497 ("powerpc/mm/book3s: Update pmd_present to look at _PAGE_PRESENT bit")
Cc: stable@vger.kernel.org # v4.20+
Suggested-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/mm/pgtable.c