Message ID | 1360693550-31609-1-git-send-email-catalin.marinas@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Feb 12, 2013 at 06:25:50PM +0000, Catalin Marinas wrote: > Following commit 26ffd0d4 (ARM: mm: introduce present, faulting entries > for PAGE_NONE), if a page has been mapped as PROT_NONE, the L_PTE_VALID > bit is cleared by the set_pte_ext() code. With LPAE the software and > hardware pte share the same location and subsequent modifications of pte > range (change_protection()) will leave the L_PTE_VALID bit cleared. > > This patch adds the L_PTE_VALID bit to the newprot mask in pte_modify(). > > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > Reported-by: Subash Patel <subash.rp@samsung.com> > Tested-by: Subash Patel <subash.rp@samsung.com> > Cc: Will Deacon <will.deacon@arm.com> This matches what I did for arm64, so: Acked-by: Will Deacon <will.deacon@arm.com> Cheers, Will > --- > arch/arm/include/asm/pgtable.h | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h > index 9c82f988..c094749 100644 > --- a/arch/arm/include/asm/pgtable.h > +++ b/arch/arm/include/asm/pgtable.h > @@ -240,7 +240,8 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; } > > static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) > { > - const pteval_t mask = L_PTE_XN | L_PTE_RDONLY | L_PTE_USER | L_PTE_NONE; > + const pteval_t mask = L_PTE_XN | L_PTE_RDONLY | L_PTE_USER | > + L_PTE_NONE | L_PTE_VALID; > pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask); > return pte; > }
Hi Catalin, On Mon, Feb 18, 2013 at 04:21:50PM +0000, Will Deacon wrote: > On Tue, Feb 12, 2013 at 06:25:50PM +0000, Catalin Marinas wrote: > > Following commit 26ffd0d4 (ARM: mm: introduce present, faulting entries > > for PAGE_NONE), if a page has been mapped as PROT_NONE, the L_PTE_VALID > > bit is cleared by the set_pte_ext() code. With LPAE the software and > > hardware pte share the same location and subsequent modifications of pte > > range (change_protection()) will leave the L_PTE_VALID bit cleared. > > > > This patch adds the L_PTE_VALID bit to the newprot mask in pte_modify(). > > > > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > > Reported-by: Subash Patel <subash.rp@samsung.com> > > Tested-by: Subash Patel <subash.rp@samsung.com> > > Cc: Will Deacon <will.deacon@arm.com> > > This matches what I did for arm64, so: > > Acked-by: Will Deacon <will.deacon@arm.com> Can you put this into the patch system please? Cheers, Will
On Mon, Feb 25, 2013 at 02:43:56PM +0000, Will Deacon wrote: > Hi Catalin, > > On Mon, Feb 18, 2013 at 04:21:50PM +0000, Will Deacon wrote: > > On Tue, Feb 12, 2013 at 06:25:50PM +0000, Catalin Marinas wrote: > > > Following commit 26ffd0d4 (ARM: mm: introduce present, faulting entries > > > for PAGE_NONE), if a page has been mapped as PROT_NONE, the L_PTE_VALID > > > bit is cleared by the set_pte_ext() code. With LPAE the software and > > > hardware pte share the same location and subsequent modifications of pte > > > range (change_protection()) will leave the L_PTE_VALID bit cleared. > > > > > > This patch adds the L_PTE_VALID bit to the newprot mask in pte_modify(). > > > > > > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > > > Reported-by: Subash Patel <subash.rp@samsung.com> > > > Tested-by: Subash Patel <subash.rp@samsung.com> > > > Cc: Will Deacon <will.deacon@arm.com> > > > > This matches what I did for arm64, so: > > > > Acked-by: Will Deacon <will.deacon@arm.com> > > Can you put this into the patch system please? Already picked by rmk (I don't remember the patch number).
On Mon, Feb 25, 2013 at 02:51:10PM +0000, Catalin Marinas wrote: > On Mon, Feb 25, 2013 at 02:43:56PM +0000, Will Deacon wrote: > > Hi Catalin, > > > > On Mon, Feb 18, 2013 at 04:21:50PM +0000, Will Deacon wrote: > > > On Tue, Feb 12, 2013 at 06:25:50PM +0000, Catalin Marinas wrote: > > > > Following commit 26ffd0d4 (ARM: mm: introduce present, faulting entries > > > > for PAGE_NONE), if a page has been mapped as PROT_NONE, the L_PTE_VALID > > > > bit is cleared by the set_pte_ext() code. With LPAE the software and > > > > hardware pte share the same location and subsequent modifications of pte > > > > range (change_protection()) will leave the L_PTE_VALID bit cleared. > > > > > > > > This patch adds the L_PTE_VALID bit to the newprot mask in pte_modify(). > > > > > > > > Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> > > > > Reported-by: Subash Patel <subash.rp@samsung.com> > > > > Tested-by: Subash Patel <subash.rp@samsung.com> > > > > Cc: Will Deacon <will.deacon@arm.com> > > > > > > This matches what I did for arm64, so: > > > > > > Acked-by: Will Deacon <will.deacon@arm.com> > > > > Can you put this into the patch system please? > > Already picked by rmk (I don't remember the patch number). Great, sorry for the bother (I can't see the patch in any upstream trees). Will
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index 9c82f988..c094749 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h @@ -240,7 +240,8 @@ static inline pte_t pte_mkspecial(pte_t pte) { return pte; } static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) { - const pteval_t mask = L_PTE_XN | L_PTE_RDONLY | L_PTE_USER | L_PTE_NONE; + const pteval_t mask = L_PTE_XN | L_PTE_RDONLY | L_PTE_USER | + L_PTE_NONE | L_PTE_VALID; pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask); return pte; }