[PATCH] powerpc: fix ioremap_flags() with book3e pte definition
Li Yang
leoli at freescale.com
Fri Feb 5 03:53:02 EST 2010
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.
Signed-off-by: Li Yang <leoli at freescale.com>
---
arch/powerpc/mm/pgtable_32.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c
index cb96cb2..aff7c04 100644
--- a/arch/powerpc/mm/pgtable_32.c
+++ b/arch/powerpc/mm/pgtable_32.c
@@ -144,6 +144,11 @@ 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);
+#if defined(CONFIG_FSL_BOOKE) && defined(CONFIG_PTE_64BIT)
+ /* supervisor read permission has just been cleared, add back */
+ flags |= _PAGE_BAP_SR;
+#endif
+
return __ioremap_caller(addr, size, flags, __builtin_return_address(0));
}
EXPORT_SYMBOL(ioremap_flags);
--
1.6.6-rc1.GIT
More information about the Linuxppc-dev
mailing list