aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/os-Linux/skas/process.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/um/os-Linux/skas/process.c')
-rw-r--r--arch/um/os-Linux/skas/process.c11
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
63void wait_stub_done(int pid) 63void 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)