parisc: fix kernel crash (protection id trap) when compiling ruby1.9
authorKyle McMartin <kyle@mcmartin.ca>
Sat, 20 Dec 2008 02:29:06 +0000 (02:29 +0000)
committerKyle McMartin <kyle@mcmartin.ca>
Mon, 5 Jan 2009 19:16:46 +0000 (19:16 +0000)
commitc61c25eb02757ecf697015ef4ae3675c5e114e2e
treedb955b3bcd10a69dbb68366203ee0d6b64cbfe3d
parentaefa8b6bf48fdcc904de4f166e59ab37fb750dec
parisc: fix kernel crash (protection id trap) when compiling ruby1.9

On Wed, Dec 17, 2008 at 11:46:05PM +0100, Helge Deller wrote:
>

Honestly, I can't decide whether to apply this. It really should never
happen in the kernel, since the kernel can guarantee it won't get the
access rights failure (highest privilege level, and can set %sr and
%protid to whatever it wants.)

It really genuinely is a bug that probably should panic the kernel. The
only precedent I can easily see is x86 fixing up a bad iret with a
general protection fault, which is more or less analogous to code 27
here.

On the other hand, taking the exception on a userspace access really
isn't all that critical, and there's fundamentally little reason for the
kernel not to SIGSEGV the process, and continue...

Argh.

(btw, I've instrumented my do_sys_poll with a pile of assertions that
 %cr8 << 1 == %sr3 == current->mm.context... let's see if where we're
 getting corrupted is deterministic, though, I would guess that it won't
 be.)

Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
arch/parisc/include/asm/uaccess.h
arch/parisc/kernel/traps.c
arch/parisc/mm/fault.c