diff options
Diffstat (limited to 'arch/um/os-Linux/skas/process.c')
-rw-r--r-- | arch/um/os-Linux/skas/process.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c index 765cfa6ddbcd..2cc2071112bc 100644 --- a/arch/um/os-Linux/skas/process.c +++ b/arch/um/os-Linux/skas/process.c | |||
@@ -55,10 +55,10 @@ static int ptrace_dump_regs(int pid) | |||
55 | * Signals that are OK to receive in the stub - we'll just continue it. | 55 | * Signals that are OK to receive in the stub - we'll just continue it. |
56 | * SIGWINCH will happen when UML is inside a detached screen. | 56 | * SIGWINCH will happen when UML is inside a detached screen. |
57 | */ | 57 | */ |
58 | #define STUB_SIG_MASK ((1 << SIGVTALRM) | (1 << SIGWINCH)) | 58 | #define STUB_SIG_MASK (1 << SIGVTALRM) |
59 | 59 | ||
60 | /* Signals that the stub will finish with - anything else is an error */ | 60 | /* Signals that the stub will finish with - anything else is an error */ |
61 | #define STUB_DONE_MASK ((1 << SIGUSR1) | (1 << SIGTRAP)) | 61 | #define STUB_DONE_MASK (1 << SIGTRAP) |
62 | 62 | ||
63 | void wait_stub_done(int pid) | 63 | void wait_stub_done(int pid) |
64 | { | 64 | { |
@@ -179,6 +179,7 @@ static int userspace_tramp(void *stack) | |||
179 | ptrace(PTRACE_TRACEME, 0, 0, 0); | 179 | ptrace(PTRACE_TRACEME, 0, 0, 0); |
180 | 180 | ||
181 | signal(SIGTERM, SIG_DFL); | 181 | signal(SIGTERM, SIG_DFL); |
182 | signal(SIGWINCH, SIG_IGN); | ||
182 | err = set_interval(); | 183 | err = set_interval(); |
183 | if (err) | 184 | if (err) |
184 | panic("userspace_tramp - setting timer failed, errno = %d\n", | 185 | panic("userspace_tramp - setting timer failed, errno = %d\n", |
@@ -222,11 +223,7 @@ static int userspace_tramp(void *stack) | |||
222 | 223 | ||
223 | set_sigstack((void *) STUB_DATA, UM_KERN_PAGE_SIZE); | 224 | set_sigstack((void *) STUB_DATA, UM_KERN_PAGE_SIZE); |
224 | sigemptyset(&sa.sa_mask); | 225 | sigemptyset(&sa.sa_mask); |
225 | sigaddset(&sa.sa_mask, SIGIO); | 226 | sa.sa_flags = SA_ONSTACK | SA_NODEFER; |
226 | sigaddset(&sa.sa_mask, SIGWINCH); | ||
227 | sigaddset(&sa.sa_mask, SIGVTALRM); | ||
228 | sigaddset(&sa.sa_mask, SIGUSR1); | ||
229 | sa.sa_flags = SA_ONSTACK; | ||
230 | sa.sa_handler = (void *) v; | 227 | sa.sa_handler = (void *) v; |
231 | sa.sa_restorer = NULL; | 228 | sa.sa_restorer = NULL; |
232 | if (sigaction(SIGSEGV, &sa, NULL) < 0) | 229 | if (sigaction(SIGSEGV, &sa, NULL) < 0) |