Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6767df24 authored by Catalin Marinas's avatar Catalin Marinas Committed by Will Deacon
Browse files

arm64: Do not mask out PTE_RDONLY in pte_same()



Following commit 73e86cb0 ("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 747a70e6 ("arm64: Fix copy-on-write referencing in HugeTLB")

Fixes: 73e86cb0 ("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: default avatarJohn Stultz <john.stultz@linaro.org>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarWill Deacon <will@kernel.org>
parent 1cf45b8f
Loading
Loading
Loading
Loading
+0 −17
Original line number Diff line number Diff line
@@ -283,23 +283,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.
 */