aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/kernel/skas
diff options
context:
space:
mode:
authorJeff Dike <jdike@addtoit.com>2005-05-05 19:15:32 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-05-05 19:36:36 -0400
commitcd2ee4a30cc0775d8b54e5b958613361a7cacfec (patch)
treeedea72ea7d723a1c35675632850916d77084581b /arch/um/kernel/skas
parentc578455a3eccf4dd7bd111e77129c301d6d67914 (diff)
[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>
Diffstat (limited to 'arch/um/kernel/skas')
-rw-r--r--arch/um/kernel/skas/process.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/um/kernel/skas/process.c b/arch/um/kernel/skas/process.c
index c0b30515dfb6..4dc13bc8cfd8 100644
--- a/arch/um/kernel/skas/process.c
+++ b/arch/um/kernel/skas/process.c
@@ -28,10 +28,11 @@
28#include "chan_user.h" 28#include "chan_user.h"
29#include "signal_user.h" 29#include "signal_user.h"
30#include "registers.h" 30#include "registers.h"
31#include "process.h"
31 32
32int is_skas_winch(int pid, int fd, void *data) 33int is_skas_winch(int pid, int fd, void *data)
33{ 34{
34 if(pid != os_getpid()) 35 if(pid != os_getpgrp())
35 return(0); 36 return(0);
36 37
37 register_winch_irq(-1, fd, -1, data); 38 register_winch_irq(-1, fd, -1, data);
@@ -259,6 +260,10 @@ int start_idle_thread(void *stack, void *switch_buf_ptr, void **fork_buf_ptr)
259 sigjmp_buf **switch_buf = switch_buf_ptr; 260 sigjmp_buf **switch_buf = switch_buf_ptr;
260 int n; 261 int n;
261 262
263 set_handler(SIGWINCH, (__sighandler_t) sig_handler,
264 SA_ONSTACK | SA_RESTART, SIGUSR1, SIGIO, SIGALRM,
265 SIGVTALRM, -1);
266
262 *fork_buf_ptr = &initial_jmpbuf; 267 *fork_buf_ptr = &initial_jmpbuf;
263 n = sigsetjmp(initial_jmpbuf, 1); 268 n = sigsetjmp(initial_jmpbuf, 1);
264 if(n == 0) 269 if(n == 0)