[PATCH] uml: Fix SIGWINCH relaying
This makes SIGWINCH work again, and fixes a couple of SIGWINCH-associated crashes. First, the sigio thread disables SIGWINCH because all hell breaks loose if it ever gets one and tries to call the signal handling code. Second, there was a problem with deferencing tty structs after they were freed. The SIGWINCH support for a tty wasn't being turned off or freed after the tty went away. Signed-off-by: Jeff Dike <jdike@addtoit.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:

committed by
Linus Torvalds

parent
c578455a3e
commit
cd2ee4a30c
@@ -26,6 +26,7 @@
|
||||
#include "kern_util.h"
|
||||
#include "chan_user.h"
|
||||
#include "ptrace_user.h"
|
||||
#include "irq_user.h"
|
||||
#include "mode.h"
|
||||
#include "tt.h"
|
||||
|
||||
@@ -33,7 +34,7 @@ static int tracer_winch[2];
|
||||
|
||||
int is_tracer_winch(int pid, int fd, void *data)
|
||||
{
|
||||
if(pid != tracing_pid)
|
||||
if(pid != os_getpgrp())
|
||||
return(0);
|
||||
|
||||
register_winch_irq(tracer_winch[0], fd, -1, data);
|
||||
@@ -119,6 +120,7 @@ static int signal_tramp(void *arg)
|
||||
signal(SIGSEGV, (__sighandler_t) sig_handler);
|
||||
set_cmdline("(idle thread)");
|
||||
set_init_pid(os_getpid());
|
||||
init_irq_signals(0);
|
||||
proc = arg;
|
||||
return((*proc)(NULL));
|
||||
}
|
||||
|
Reference in New Issue
Block a user