Port-sgimips archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: R4000 end-of-page bug
On Mar 7, 2009, at 5:06 AM, Frank Wille wrote:
I have rebuilt the kernel with it, but it doesn't change much.
I imagine you'd have to rebuild the whole system with -mfix-r4000. I
may be mistaken, but I don't think that these bugs should affect the
kernel, since it doesn't execute code via virtual memory.
The EOP bug is more nefarious and may be a security vulnerability.
Apparently when it is triggered, the jump target address is used as
the exception vector.
Oh, yes! That means without some hacks to the exception handler
(wiring down
following pages) such an R4000 system will always be vulnerable? :|
I think it's worse than that. Since MIPS has no execute protection bit
on pages, I think that any program could just dynamically generate a
vulnerable page and jump to it. The kernel would never have a chance
of protecting it.
It sucks, but I doubt anyone would use this as an untrusted, multiuser
system.
BTW, I asked somebody who has more experience with gcc (Gunther
Nikl) to do
the alignment-modification for us. And I'm currently testing the
following
patch to src/gnu/dist/gcc4/gcc/config/mips/mips.c:
[snip]
I already recompiled the kernel and all jumps and most branches seem
to be
aligned. And the kernel works! Now I'm recompiling the whole
userland to see
if it makes any difference.
We made this fix depend on -mfix-r4000.
Awesome! Given what I said above, I'm kind of surprised that it would
matter for the kernel. Perhaps I was wrong.
One thing, though: I think that this bug affects branch instructions,
too.
Steve
Home |
Main Index |
Thread Index |
Old Index