From 6dbf8092548b9d6190f824f96e9018006a55e19a Mon Sep 17 00:00:00 2001 From: Paul Mackerras Date: Thu, 19 Jul 2007 10:00:20 +1000 Subject: [PATCH] --- yaml --- r: 62593 b: refs/heads/master c: 08ae6cc15db201fa20cc4893d9500c1f6b20e560 h: refs/heads/master i: 62591: 8e466cf41769959b7b835966fed27524dd58ed63 v: v3 --- [refs] | 2 +- trunk/arch/powerpc/mm/fault.c | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 34238bce8b2b..6d9a09542a6b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ca8ffc974d43033be6e1d4277a45822d2c3656f4 +refs/heads/master: 08ae6cc15db201fa20cc4893d9500c1f6b20e560 diff --git a/trunk/arch/powerpc/mm/fault.c b/trunk/arch/powerpc/mm/fault.c index 3767211b3d0f..ab3546c5ac3a 100644 --- a/trunk/arch/powerpc/mm/fault.c +++ b/trunk/arch/powerpc/mm/fault.c @@ -283,7 +283,13 @@ int __kprobes do_page_fault(struct pt_regs *regs, unsigned long address, /* protection fault */ if (error_code & DSISR_PROTFAULT) goto bad_area; - if (!(vma->vm_flags & VM_EXEC)) + /* + * Allow execution from readable areas if the MMU does not + * provide separate controls over reading and executing. + */ + if (!(vma->vm_flags & VM_EXEC) && + (cpu_has_feature(CPU_FTR_NOEXECUTE) || + !(vma->vm_flags & (VM_READ | VM_WRITE)))) goto bad_area; #else pte_t *ptep;