| From ea458a35a7842e52d46277410802c76e6a2b18f1 Mon Sep 17 00:00:00 2001 |
| From: Catalin Marinas <catalin.marinas@arm.com> |
| Date: Wed, 6 Nov 2019 15:41:05 +0000 |
| Subject: [PATCH] arm64: Do not mask out PTE_RDONLY in pte_same() |
| |
| commit 6767df245f4736d0cf0c6fb7cf9cf94b27414245 upstream. |
| |
| 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> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h |
| index 4e07aa514f60..7b55a2c604bd 100644 |
| --- a/arch/arm64/include/asm/pgtable.h |
| +++ b/arch/arm64/include/asm/pgtable.h |
| @@ -264,23 +264,6 @@ static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, |
| set_pte(ptep, pte); |
| } |
| |
| -#define __HAVE_ARCH_PTE_SAME |
| -static inline int pte_same(pte_t pte_a, pte_t pte_b) |
| -{ |
| - pteval_t lhs, rhs; |
| - |
| - lhs = pte_val(pte_a); |
| - rhs = pte_val(pte_b); |
| - |
| - if (pte_present(pte_a)) |
| - lhs &= ~PTE_RDONLY; |
| - |
| - if (pte_present(pte_b)) |
| - rhs &= ~PTE_RDONLY; |
| - |
| - return (lhs == rhs); |
| -} |
| - |
| /* |
| * Huge pte definitions. |
| */ |
| -- |
| 2.7.4 |
| |