|
@@ -632,6 +632,7 @@ static irqreturn_t winch_interrupt(int irq, void *data)
|
|
|
int fd = winch->fd;
|
|
|
int err;
|
|
|
char c;
|
|
|
+ struct pid *pgrp;
|
|
|
|
|
|
if (fd != -1) {
|
|
|
err = generic_read(fd, &c, NULL);
|
|
@@ -657,7 +658,10 @@ static irqreturn_t winch_interrupt(int irq, void *data)
|
|
|
if (line != NULL) {
|
|
|
chan_window_size(line, &tty->winsize.ws_row,
|
|
|
&tty->winsize.ws_col);
|
|
|
- kill_pgrp(tty->pgrp, SIGWINCH, 1);
|
|
|
+ pgrp = tty_get_pgrp(tty);
|
|
|
+ if (pgrp)
|
|
|
+ kill_pgrp(pgrp, SIGWINCH, 1);
|
|
|
+ put_pid(pgrp);
|
|
|
}
|
|
|
tty_kref_put(tty);
|
|
|
}
|