[PATCH v5 6/7] mm/radix: Fix permissions correctly for interrupt_vectors
Balbir Singh
bsingharora at gmail.com
Thu Jun 29 03:04:10 AEST 2017
Commit 9abcc98 introduced marking kernel text as executable,
but missed some bits of the changes from hash_utils_64.c, where
under CONFIG_RELOCATABLE with CONFIG_RELOCATABLE_TEST or a kdump
kernel, if the size of the mapping was less than 1G, we end up
marking the first page (address range 0->mapping_size) as non
executable. As a side-effect none of the exception handlers
work
fixes - Commit 9abcc981de97
("powerpc/mm/radix: Only add X for pages overlapping kernel text")
Signed-off-by: Balbir Singh <bsingharora at gmail.com>
---
arch/powerpc/mm/pgtable-radix.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c
index 6dc9923..ec21f97 100644
--- a/arch/powerpc/mm/pgtable-radix.c
+++ b/arch/powerpc/mm/pgtable-radix.c
@@ -230,6 +230,14 @@ static int __meminit create_physical_mapping(unsigned long start,
else
prot = PAGE_KERNEL;
+ /*
+ * See the comment in hash_utils_64.c
+ */
+ if ((PHYSICAL_START > MEMORY_START) &&
+ overlaps_interrupt_vector_text(vaddr,
+ vaddr + mapping_size))
+ prot = PAGE_KERNEL_X;
+
rc = radix__map_kernel_page(vaddr, addr, prot, mapping_size);
if (rc)
return rc;
--
2.9.4
More information about the Linuxppc-dev
mailing list