On Fri, Dec 19, 2008 at 11:59:11PM +0100, Helge Deller wrote: > Thanks for cleaning up my patch and splitting out the fixup_exception() > code. > Your patch is fine and I think you should apply it (with one minor > addition - see below). > The reason I think why you should apply it is, that we shouldn't let the > kernel crash on (correct) userspace apps. > Maybe adding a comment that this check in trap #27 should be removed > when the bug is fixed would be good though. > Hmm. You raise a good point that userspace is DTRT... Can you test to see if this patch fixes things? My c3000 with an unpatched kernel has suddenly decided it doesn't want to crash anymore... diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index 4c771cd..73058e8 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c @@ -745,6 +745,19 @@ void handle_interruption(int code, struct pt_regs *regs) /* Fall Through */ case 27: /* Data memory protection ID trap */ +#define HANDLE_KERNEL_PROTECTION_TRAPS +#ifdef HANDLE_KERNEL_PROTECTION_TRAPS + /* XXX very very evil */ + if (code == 27 && !user_mode(regs)) { + /* bang the spaceid back into sr3 */ + regs->sr[3] = (unsigned long)current->mm.context; + /* TODO? reprogram %cr8? load_context will get it. */ + /* TODO? thread_struct.faulted count to catch + * taking the same fault on the same insn again? + */ + return; + } +#endif /*HANDLE_KERNEL_PROTECTION_TRAPS*/ die_if_kernel("Protection id trap", regs, code); si.si_code = SEGV_MAPERR; si.si_signo = SIGSEGV; -- To unsubscribe from this list: send the line "unsubscribe linux-parisc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html