|
@@ -55,10 +55,10 @@ static int ptrace_dump_regs(int pid)
|
|
|
* Signals that are OK to receive in the stub - we'll just continue it.
|
|
|
* SIGWINCH will happen when UML is inside a detached screen.
|
|
|
*/
|
|
|
-#define STUB_SIG_MASK ((1 << SIGVTALRM) | (1 << SIGWINCH))
|
|
|
+#define STUB_SIG_MASK (1 << SIGVTALRM)
|
|
|
|
|
|
/* Signals that the stub will finish with - anything else is an error */
|
|
|
-#define STUB_DONE_MASK ((1 << SIGUSR1) | (1 << SIGTRAP))
|
|
|
+#define STUB_DONE_MASK (1 << SIGTRAP)
|
|
|
|
|
|
void wait_stub_done(int pid)
|
|
|
{
|
|
@@ -179,6 +179,7 @@ static int userspace_tramp(void *stack)
|
|
|
ptrace(PTRACE_TRACEME, 0, 0, 0);
|
|
|
|
|
|
signal(SIGTERM, SIG_DFL);
|
|
|
+ signal(SIGWINCH, SIG_IGN);
|
|
|
err = set_interval();
|
|
|
if (err)
|
|
|
panic("userspace_tramp - setting timer failed, errno = %d\n",
|
|
@@ -222,11 +223,7 @@ static int userspace_tramp(void *stack)
|
|
|
|
|
|
set_sigstack((void *) STUB_DATA, UM_KERN_PAGE_SIZE);
|
|
|
sigemptyset(&sa.sa_mask);
|
|
|
- sigaddset(&sa.sa_mask, SIGIO);
|
|
|
- sigaddset(&sa.sa_mask, SIGWINCH);
|
|
|
- sigaddset(&sa.sa_mask, SIGVTALRM);
|
|
|
- sigaddset(&sa.sa_mask, SIGUSR1);
|
|
|
- sa.sa_flags = SA_ONSTACK;
|
|
|
+ sa.sa_flags = SA_ONSTACK | SA_NODEFER;
|
|
|
sa.sa_handler = (void *) v;
|
|
|
sa.sa_restorer = NULL;
|
|
|
if (sigaction(SIGSEGV, &sa, NULL) < 0)
|