On Wed, 2007-07-11 at 20:18 +0200, Segher Boessenkool wrote: > Some old software on ppc32 executes from pages it hasn't marked > executable. Since "classic" hardware doesn't distinguish between > execute and read accesses, the do_page_fault() code shouldn't > either. This makes glibc-2.2 work again on such hardware. > > Signed-off-by: Segher Boessenkool <[EMAIL PROTECTED]> > Cc: Scott Wood <[EMAIL PROTECTED]> > Cc: Johannes Berg <[EMAIL PROTECTED]> > --- > Tested by Scott on 32-bit, glibc-2.2.5 and glibc-2.3.3 (no new > failures and problem solved), needs confirmation from Johannes > on his glibc-2.4 "---p" testcase. Could use testing on ppc64 > and BookE too, for good measure.
Acked-by: Johannes Berg <[EMAIL PROTECTED]> I tested this patch and it does fix the problem I was seeing. > This reverts the previous change and makes the bugfix behave > more like the arch/ppc code. > arch/powerpc/mm/fault.c | 14 ++++++++++---- > 1 files changed, 10 insertions(+), 4 deletions(-) > > diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c > index 115b25f..5d7add0 100644 > --- a/arch/powerpc/mm/fault.c > +++ b/arch/powerpc/mm/fault.c > @@ -278,14 +278,17 @@ good_area: > goto bad_area; > #endif /* CONFIG_8xx */ > > +#ifdef CONFIG_PPC64 > if (is_exec) { > -#if !(defined(CONFIG_4xx) || defined(CONFIG_BOOKE)) > /* protection fault */ > if (error_code & DSISR_PROTFAULT) > goto bad_area; > if (!(vma->vm_flags & VM_EXEC)) > goto bad_area; > -#else > + } else > + /* A read or write, code continues below... */ > +#elsif defined(CONFIG_4xx) || defined(CONFIG_BOOKE) > + if (is_exec) { > pte_t *ptep; > pmd_t *pmdp; > > @@ -310,9 +313,12 @@ good_area: > } > pte_unmap_unlock(ptep, ptl); > } > + } else > + /* A read or write, code continues below... */ > #endif > - /* a write */ > - } else if (is_write) { > + > + /* A read or write. Classic PPC32 execute is considered a read. */ > + if (is_write) { > if (!(vma->vm_flags & VM_WRITE)) > goto bad_area; > /* a read */
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev