Messages in this thread | | | Date | Tue, 28 Dec 1999 20:24:35 -0500 | From | Keith Adams <> | Subject | [PATCH] signal.c, kernel 2.3.34 |
| |
This patch against 2.3.34 causes siginfo on i386 to correctly report the address and SEGV_MAPERR/SEGV_ACCERR status for segvs. To accomplish this, it allows queueing of up to one siginfo for each non-realtime signal, as per the XXX comments in kernel/signal.c. It also cleans this code up somewhat, since dequeueing of both non-realtime and realtime signals is now identical. It looks bigger than it is, because some code has been pulled out of a conditional block.
There is an arch-dependent portion to this patch, in arch/i386/mm/fault.c . Ideally, I would change the page fault handlers for all architectures to correctly report the address and si_code for their faults, but since I only have an i386 to test with, I only patched the i386. The patch should not break other architectures, in any event.
I have tested it, and found that it correctly reports the siginfo information on i386, only queues one non realtime signal at a time, and still queues as many realtime signals as are sent. Test code available on request. This is my first kernel patch, so any feedback would be appreciated.
Thanks, Keith Adams [unhandled content-type:application/octet-stream]This patch enables correct siginfo reporting for SIGSEGV on i386. Keith Adams -- kma@cs.brown.edu
| |