| 4043 | } |
| 4044 | |
| 4045 | static void |
| 4046 | sigfastblock_failed(struct thread *td, bool sendsig, bool write) |
| 4047 | { |
| 4048 | ksiginfo_t ksi; |
| 4049 | |
| 4050 | /* |
| 4051 | * Prevent further fetches and SIGSEGVs, allowing thread to |
| 4052 | * issue syscalls despite corruption. |
| 4053 | */ |
| 4054 | sigfastblock_clear(td); |
| 4055 | |
| 4056 | if (!sendsig) |
| 4057 | return; |
| 4058 | ksiginfo_init_trap(&ksi); |
| 4059 | ksi.ksi_signo = SIGSEGV; |
| 4060 | ksi.ksi_code = write ? SEGV_ACCERR : SEGV_MAPERR; |
| 4061 | ksi.ksi_addr = td->td_sigblock_ptr; |
| 4062 | trapsignal(td, &ksi); |
| 4063 | } |
| 4064 | |
| 4065 | static bool |
| 4066 | sigfastblock_fetch_sig(struct thread *td, bool sendsig, uint32_t *valp) |
no test coverage detected