Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d18ad02 authored by Balbir Singh's avatar Balbir Singh Committed by Michael Ellerman
Browse files

powerpc/mm: Detect instruction fetch denied and report



ISA 3 allows for prevention of instruction fetch and execution
of user mode pages. If such an error occurs, SRR1 bit 35 reports the
error. We catch and report the error in do_page_fault().

Signed-off-by: default avatarBalbir Singh <bsingharora@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent ee97b6b9
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -390,6 +390,12 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
#endif /* CONFIG_8xx */

	if (is_exec) {
		/*
		 * An execution fault + no execute ?
		 */
		if (regs->msr & SRR1_ISI_N_OR_G)
			goto bad_area;

		/*
		 * Allow execution from readable areas if the MMU does not
		 * provide separate controls over reading and executing.
@@ -404,6 +410,7 @@ int do_page_fault(struct pt_regs *regs, unsigned long address,
		    (cpu_has_feature(CPU_FTR_NOEXECUTE) ||
		     !(vma->vm_flags & (VM_READ | VM_WRITE))))
			goto bad_area;

#ifdef CONFIG_PPC_STD_MMU
		/*
		 * protfault should only happen due to us