[PATCH] Treat ISI faults as read faults on classic 32-bit PowerPC
Segher Boessenkool
segher at kernel.crashing.org
Fri Jul 20 04:46:03 EST 2007
> Hmmm. The dangling else clauses are pretty gross,
I hoped you wouldn't notice. I guess I shouldn't have
commented them :-)
"It was the cleanest thing I could come up with". Every
other thing I tried ended up as a maze of #ifdefs or some
incomprehensible cross-jumping mess; and I was aiming for
a minimal fix, too.
Or, perhaps, it was just a ploy to trick you into writing
a patch yourself.
> and in fact we have
> the same problem on POWER3 and RS64 processors
Right. Too bad there is no public documentation for either :-/
> (to be fair, we had
> the problem before and didn't notice, but we should still fix it).
Yeah.
> How about this instead?
It's the better way forward, consider my patch withdrawn :-)
> - 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;
Should you really be testing VM_READ|VM_WRITE, or should it just
be VM_READ?
Oh, and that conditional might benefit from being split into
two separate "if" statements, it's a bit hard to read this way.
Segher
More information about the Linuxppc-dev
mailing list