From: "Adam Tlałka" <atlka@pg.gda.pl>
To: Bodo Eggert <7eggert@gmx.de>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>, Bodo Eggert <7eggert@gmx.de>,
linux-kernel@vger.kernel.org, torvalds@osdl.org
Subject: Re: [PATCH 0/3] SIGWINCH problem with terminal apps still alive
Date: Tue, 14 Oct 2008 14:51:04 +0200 [thread overview]
Message-ID: <20081014145104.24aa96d0@merlin.oi.pg.gda.pl> (raw)
In-Reply-To: <alpine.LSU.0.999.0810131359310.6408@be1.lrz>
[-- Attachment #1: Type: text/plain, Size: 596 bytes --]
Hello,
I am sending sligtly corrected patch.
In case of ioctl(,TIOCSWINSZ,) on pty side we should send signal to
master side too. I've tested it on modified unix putty version
and it works properly.
Signed-off-by: Adam Tla/lka <atlka@pg.gda.pl>
Maybe we could optimize code more and not call
get_pid() and put_pid() if they are not needed - in case
where there is no master/slave pair.
Regards
--
Adam Tlałka mailto:atlka@pg.gda.pl ^v^ ^v^ ^v^
System & Network Administration Group - - - ~~~~~~
Computer Center, Gdańsk University of Technology, Poland
[-- Attachment #2: 2.6.27_tty_io_3.patch --]
[-- Type: text/x-patch, Size: 1879 bytes --]
--- tty_io_orig.c 2008-10-10 05:37:30.000000000 +0200
+++ tty_io.c 2008-10-14 14:28:50.000000000 +0200
@@ -2522,29 +2522,33 @@ int tty_do_resize(struct tty_struct *tty
struct pid *pgrp, *rpgrp;
unsigned long flags;
- /* For a PTY we need to lock the tty side */
+ /* in case of resize ioctl on slave */
+ if ((tty == real_tty)
+ && tty->driver->type == TTY_DRIVER_TYPE_PTY)
+ tty = tty->link;
+
+ /* for a PTY we need to lock the tty side */
mutex_lock(&real_tty->termios_mutex);
- if (!memcmp(ws, &tty->winsize, sizeof(*ws)))
- goto done;
- /* Get the PID values and reference them so we can
- avoid holding the tty ctrl lock while sending signals */
- spin_lock_irqsave(&tty->ctrl_lock, flags);
- pgrp = get_pid(tty->pgrp);
- rpgrp = get_pid(real_tty->pgrp);
- spin_unlock_irqrestore(&tty->ctrl_lock, flags);
-
- if (pgrp)
- kill_pgrp(pgrp, SIGWINCH, 1);
- if (rpgrp != pgrp && rpgrp)
- kill_pgrp(rpgrp, SIGWINCH, 1);
-
- put_pid(pgrp);
- put_pid(rpgrp);
-
- tty->winsize = *ws;
+ flags = memcmp(ws, &real_tty->winsize, sizeof(*ws));
real_tty->winsize = *ws;
-done:
mutex_unlock(&real_tty->termios_mutex);
+ if (flags){
+ /* Get the PID values and reference them so we can
+ avoid holding the tty ctrl lock while sending signals */
+ spin_lock_irqsave(&tty->ctrl_lock, flags);
+ pgrp = get_pid(tty->pgrp);
+ rpgrp = get_pid(real_tty->pgrp);
+ spin_unlock_irqrestore(&tty->ctrl_lock, flags);
+
+ if (pgrp)
+ kill_pgrp(pgrp, SIGWINCH, 1);
+ if (rpgrp != pgrp && rpgrp)
+ kill_pgrp(rpgrp, SIGWINCH, 1);
+
+ put_pid(pgrp);
+ put_pid(rpgrp);
+ }
+
return 0;
}
@@ -2996,7 +3000,7 @@ long tty_ioctl(struct file *file, unsign
case TIOCSTI:
return tiocsti(tty, p);
case TIOCGWINSZ:
- return tiocgwinsz(tty, p);
+ return tiocgwinsz(real_tty, p);
case TIOCSWINSZ:
return tiocswinsz(tty, real_tty, p);
case TIOCCONS:
next prev parent reply other threads:[~2008-10-14 12:52 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <bjXel-4CU-17@gated-at.bofh.it>
[not found] ` <bjYap-5Q0-25@gated-at.bofh.it>
[not found] ` <bk30i-3Gx-1@gated-at.bofh.it>
[not found] ` <bk6AV-8ms-7@gated-at.bofh.it>
[not found] ` <bkrvO-1HF-49@gated-at.bofh.it>
[not found] ` <blePJ-6rI-3@gated-at.bofh.it>
[not found] ` <blmDC-7ZU-7@gated-at.bofh.it>
2008-10-11 14:04 ` [PATCH 0/1] " Bodo Eggert
2008-10-11 17:58 ` Alan Cox
2008-10-12 12:32 ` [PATCH 0/2] " Adam Tlałka
2008-10-12 14:22 ` Alan Cox
2008-10-12 17:59 ` Adam Tlałka
2008-10-12 18:03 ` Alan Cox
2008-10-12 19:01 ` Adam Tlałka
2008-10-12 20:22 ` Alan Cox
2008-10-13 9:59 ` Bodo Eggert
2008-10-13 10:01 ` Alan Cox
2008-10-13 12:07 ` Bodo Eggert
2008-10-14 12:51 ` Adam Tlałka [this message]
2008-10-14 14:11 ` [PATCH 0/4] " Adam Tlałka
2008-10-16 10:27 ` [PATCH 0/5] " Adam Tlałka
2008-10-16 10:52 ` Alan Cox
2008-10-16 11:43 ` Adam Tlałka
2008-10-17 8:39 ` Adam Tlałka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081014145104.24aa96d0@merlin.oi.pg.gda.pl \
--to=atlka@pg.gda.pl \
--cc=7eggert@gmx.de \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@osdl.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®