diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2019-11-06 10:41:05 -0500 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2019-11-06 14:31:56 -0500 |
commit | 6767df245f4736d0cf0c6fb7cf9cf94b27414245 (patch) | |
tree | b135b7602e4c1c99de58cba6f32f20dd5e75ef32 | |
parent | 1cf45b8fdbb87040e1d1bd793891089f4678aa41 (diff) |
arm64: Do not mask out PTE_RDONLY in pte_same()
Following commit 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out
of set_pte_at()"), the PTE_RDONLY bit is no longer managed by
set_pte_at() but built into the PAGE_* attribute definitions.
Consequently, pte_same() must include this bit when checking two PTEs
for equality.
Remove the arm64-specific pte_same() function, practically reverting
commit 747a70e60b72 ("arm64: Fix copy-on-write referencing in HugeTLB")
Fixes: 73e86cb03cf2 ("arm64: Move PTE_RDONLY bit handling out of set_pte_at()")
Cc: <stable@vger.kernel.org> # 4.14.x-
Cc: Will Deacon <will@kernel.org>
Cc: Steve Capper <steve.capper@arm.com>
Reported-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
-rw-r--r-- | arch/arm64/include/asm/pgtable.h | 17 |
1 files changed, 0 insertions, 17 deletions
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h index 8330810f699e..565aa45ef134 100644 --- a/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h | |||
@@ -283,23 +283,6 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, | |||
283 | set_pte(ptep, pte); | 283 | set_pte(ptep, pte); |
284 | } | 284 | } |
285 | 285 | ||
286 | #define __HAVE_ARCH_PTE_SAME | ||
287 | static inline int pte_same(pte_t pte_a, pte_t pte_b) | ||
288 | { | ||
289 | pteval_t lhs, rhs; | ||
290 | |||
291 | lhs = pte_val(pte_a); | ||
292 | rhs = pte_val(pte_b); | ||
293 | |||
294 | if (pte_present(pte_a)) | ||
295 | lhs &= ~PTE_RDONLY; | ||
296 | |||
297 | if (pte_present(pte_b)) | ||
298 | rhs &= ~PTE_RDONLY; | ||
299 | |||
300 | return (lhs == rhs); | ||
301 | } | ||
302 | |||
303 | /* | 286 | /* |
304 | * Huge pte definitions. | 287 | * Huge pte definitions. |
305 | */ | 288 | */ |