[PATCH 02/24] powerpc/mm: Pre-filter SRR1 bits before do_page_fault()
Benjamin Herrenschmidt
benh at kernel.crashing.org
Sun Jul 23 11:10:10 AEST 2017
On Sat, 2017-07-22 at 18:43 +0200, LEROY Christophe wrote:
>
> > @@ -203,23 +203,13 @@ static int __do_page_fault(struct pt_regs
> > *regs, unsigned long address,
> > unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
> > int code = SEGV_MAPERR;
> > int is_write = 0;
> > - int trap = TRAP(regs);
> > - int is_exec = trap == 0x400;
> > + int is_exec = TRAP(regs) == 0x400;
>
> Don't we have a tab/space issue here ?
There seem to be indeed an extra space before the tab at the beginning
of the line, though it looks like it was already there in the orignal
code :-) I didn't notice it and thus didn't fix it. If I respin I'll
take care of it.
> > int is_user = user_mode(regs);
> > int fault;
> > int rc = 0, store_update_sp = 0;
> >
> > #if !(defined(CONFIG_4xx) || defined(CONFIG_BOOKE))
> > - /*
> > - * Fortunately the bit assignments in SRR1 for an instruction
> > - * fault and DSISR for a data fault are mostly the same for the
> > - * bits we are interested in. But there are some bits which
> > - * indicate errors in DSISR but can validly be set in SRR1.
> > - */
> > - if (is_exec)
> > - error_code &= 0x48200000;
> > - else
> > - is_write = error_code & DSISR_ISSTORE;
> > + is_write = error_code & DSISR_ISSTORE;
> > #else
> > is_write = error_code & ESR_DST;
> > #endif /* CONFIG_4xx || CONFIG_BOOKE */
> > --
> > 2.13.3
>
>
More information about the Linuxppc-dev
mailing list