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

Commit 15ed5351 authored by Feng Kan's avatar Feng Kan Committed by Gerrit - the friendly Code Review server
Browse files

arm64: enable PTE type bit in the mask for pte_modify



Caught during Trinity testing. The pte_modify does not allow
modification for PTE type bit. This cause the test to hang
the system. It is found that the PTE can't transit from an
inaccessible page (b00) to a valid page (b11) because the mask
does not allow it. This happens when a big block of mmaped
memory is set the PROT_NONE, then the a small piece is broken
off and set to PROT_WRITE | PROT_READ cause a huge page split.

Change-Id: Icd3f47db10665694b6a3cfff73b21e1d3d23dba8
Signed-off-by: default avatarFeng Kan <fkan@apm.com>
Git-commit: 6910fa16dbe142f6a0fd0fd7c249f9883ff7fc8a
Git-repo: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git


Signed-off-by: default avatarRohit Vaswani <rvaswani@codeaurora.org>
parent a2342258
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -397,7 +397,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr)
static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
{
	const pteval_t mask = PTE_USER | PTE_PXN | PTE_UXN | PTE_RDONLY |
			      PTE_PROT_NONE | PTE_VALID | PTE_WRITE;
			      PTE_PROT_NONE | PTE_WRITE | PTE_TYPE_MASK;
	pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask);
	return pte;
}