Message ID | 1274726319-4673-1-git-send-email-galak@kernel.crashing.org (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On May 24, 2010, at 1:38 PM, Kumar Gala wrote: > From: Benjamin Herrenschmidt <benh@kernel.crashing.org> > > We can't just clear the user read permission in book3e pte, because > that will also clear supervisor read permission. This surely isn't > desired. Fix the problem by adding the supervisor read back. > > BenH: Slightly simplified the ifdef and applied to ppc64 too > > Signed-off-by: Li Yang <leoli@freescale.com> > Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> > --- > For 2.6.34 stable commit 55052eeca6d71d76f7c3f156c0501814d8e5e6d3 > > arch/powerpc/mm/pgtable_32.c | 8 ++++++++ > arch/powerpc/mm/pgtable_64.c | 8 ++++++++ > 2 files changed, 16 insertions(+), 0 deletions(-) Wondering what happened to this patch (and 2 other) getting into stable queue for .34.x - k
On Wed, Jun 02, 2010 at 04:59:16PM -0500, Kumar Gala wrote: > > On May 24, 2010, at 1:38 PM, Kumar Gala wrote: > > > From: Benjamin Herrenschmidt <benh@kernel.crashing.org> > > > > We can't just clear the user read permission in book3e pte, because > > that will also clear supervisor read permission. This surely isn't > > desired. Fix the problem by adding the supervisor read back. > > > > BenH: Slightly simplified the ifdef and applied to ppc64 too > > > > Signed-off-by: Li Yang <leoli@freescale.com> > > Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> > > --- > > For 2.6.34 stable commit 55052eeca6d71d76f7c3f156c0501814d8e5e6d3 > > > > arch/powerpc/mm/pgtable_32.c | 8 ++++++++ > > arch/powerpc/mm/pgtable_64.c | 8 ++++++++ > > 2 files changed, 16 insertions(+), 0 deletions(-) > > Wondering what happened to this patch (and 2 other) getting into stable queue for .34.x They are still in the "to-apply" queue. Please be patient, I was busy with the .35-rc1 merge window and now am catching up on the stable trees. There's over 130 patches that people seem to want in the first .34 stable release, so it's taking some time to get them all in and tested. thanks, greg k-h
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index b9243e7..767b0cf 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c @@ -146,6 +146,14 @@ ioremap_flags(phys_addr_t addr, unsigned long size, unsigned long flags) /* we don't want to let _PAGE_USER and _PAGE_EXEC leak out */ flags &= ~(_PAGE_USER | _PAGE_EXEC); +#ifdef _PAGE_BAP_SR + /* _PAGE_USER contains _PAGE_BAP_SR on BookE using the new PTE format + * which means that we just cleared supervisor access... oops ;-) This + * restores it + */ + flags |= _PAGE_BAP_SR; +#endif + return __ioremap_caller(addr, size, flags, __builtin_return_address(0)); } EXPORT_SYMBOL(ioremap_flags); diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c index d95679a..d050fc8 100644 --- a/arch/powerpc/mm/pgtable_64.c +++ b/arch/powerpc/mm/pgtable_64.c @@ -265,6 +265,14 @@ void __iomem * ioremap_flags(phys_addr_t addr, unsigned long size, /* we don't want to let _PAGE_USER and _PAGE_EXEC leak out */ flags &= ~(_PAGE_USER | _PAGE_EXEC); +#ifdef _PAGE_BAP_SR + /* _PAGE_USER contains _PAGE_BAP_SR on BookE using the new PTE format + * which means that we just cleared supervisor access... oops ;-) This + * restores it + */ + flags |= _PAGE_BAP_SR; +#endif + if (ppc_md.ioremap) return ppc_md.ioremap(addr, size, flags, caller); return __ioremap_caller(addr, size, flags, caller);