From: Konrad Eisele <konrad@xxxxxxxxxxx> >> +#ifdef CONFIG_LEON >> + && !text_fault >> +#endif >> + ) { >> if(!(vma->vm_flags & VM_WRITE)) >> goto bad_area; >> } else { > > We do not break up an if like this. > And you need to comment on this. > Consider using an inline helper function or similar to avoid > obscufating the code. > I added a additional comment. --- arch/sparc/mm/fault_32.c | 9 ++++++++- 1 files changed, 8 insertions(+), 1 deletions(-) diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c index 12e447f..99c1e29 100644 --- a/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c @@ -227,7 +227,14 @@ asmlinkage void do_sparc_fault(struct pt */ good_area: info.si_code = SEGV_ACCERR; - if(write) { + if (write +#ifdef CONFIG_SPARC_LEON + /* a hardware bug in the sparc-leon SRMMU makes icache + text_fault look as if writing in certain sparc-leon + versions */ + && !text_fault +#endif + ) { if(!(vma->vm_flags & VM_WRITE)) goto bad_area; } else { -- 1.4.2.1 -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html