This patch set adds execute and read inhibit support. By default glibc
based tool chains will create mappings for data areas of a program and
shared libraries with PROT_EXEC cleared. With this patch applied, a
SIGSEGV is correctly sent if an attempt is made to execute from data
areas.
We have been running this patch for close to a year. So far it seems
to work well, so I ported it to the HEAD for your enjoyment.
I will reply with the four patches.
David Daney (4):
MIPS: Use 64-bit stores to c0_entrylo on 64-bit kernels.
MIPS: Add accessor functions and bit definitions for c0_PageGrain
MIPS: Add TLBP to uasm.
MIPS: Implement Read Inhibit/eXecute Inhibit
arch/mips/Kconfig | 7 ++
arch/mips/include/asm/mipsregs.h | 11 +++
arch/mips/include/asm/pgtable-64.h | 4 +
arch/mips/include/asm/pgtable-bits.h | 59 ++++++++++++-
arch/mips/include/asm/pgtable.h | 39 ++++++++-
arch/mips/include/asm/uasm.h | 1 +
arch/mips/mm/cache.c | 11 +++
arch/mips/mm/fault.c | 23 +++++
arch/mips/mm/init.c | 2 +-
arch/mips/mm/tlb-r4k.c | 15 +++-
arch/mips/mm/tlbex.c | 165
++++++++++++++++++++++++++++-----
arch/mips/mm/uasm.c | 5 +-
12 files changed, 308 insertions(+), 34 deletions(-)