|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On some MIPS boxes the firmware doesn't do that for us.
- We still had two unprotected loads in the sys_sigrestore(2). Use
__get_user().
- Handle QED-style L1 caches != 16kb per cache correctly.
- Protect the cacheflush instructions for the signal trampoline
just like the loads in __get_user(). Otherwise the following
code will result in a nice "Can not handle kernel paging request"
message:
#include <signal.h>
static void hurz(void)
{
}
main()
{
signal(SIGSEGV, hurz);
/* Chainsaw the stack pointer ... */
asm("move $29,%0" : :"r"(0x70000000));
*(int *) 8 = 0;
}
With the fix applied I still get the error message. The cause of
this problem is that gas produces an __ex_table section with wrong
contents. Oh well, how good that I have a nice working post 2.8.1
binutils version at home in good ol' Germany ...
|