diff options
author | Christophe Leroy <christophe.leroy@csgroup.eu> | 2020-06-15 12:57:57 +0000 |
---|---|---|
committer | Michael Ellerman <mpe@ellerman.id.au> | 2020-06-20 22:14:53 +1000 |
commit | 55ca22633a9faa34c6a61d99433f9cc8e28dd7cc (patch) | |
tree | 29d1d4b264dfef7461e611240fabcf18d7261ec4 /mm/gup.c | |
parent | 1497eea68624f6076bf3eaf66baec3771ea04045 (diff) |
mm/gup: Use huge_ptep_get() in gup_hugepte()
gup_hugepte() reads hugepage table entries, it can't read
them directly, huge_ptep_get() must be used.
Fixes: 9e343b467c70 ("READ_ONCE: Enforce atomicity for {READ,WRITE}_ONCE() memory accesses")
Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Acked-by: Will Deacon <will@kernel.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/ffc3714334c3bfaca6f13788ad039e8759ae413f.1592225558.git.christophe.leroy@csgroup.eu
Diffstat (limited to 'mm/gup.c')
-rw-r--r-- | mm/gup.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -2425,7 +2425,7 @@ static int gup_hugepte(pte_t *ptep, unsigned long sz, unsigned long addr, if (pte_end < end) end = pte_end; - pte = READ_ONCE(*ptep); + pte = huge_ptep_get(ptep); if (!pte_access_permitted(pte, flags & FOLL_WRITE)) return 0; |