LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
From: "Adam Tlałka" <atlka@pg.gda.pl>
To: "Adam Tlałka" <atlka@pg.gda.pl>
Cc: Bodo Eggert <7eggert@gmx.de>, Alan Cox <alan@lxorguk.ukuu.org.uk>,
	linux-kernel@vger.kernel.org, torvalds@osdl.org
Subject: Re: [PATCH 0/4] SIGWINCH problem with terminal apps still alive
Date: Tue, 14 Oct 2008 16:11:57 +0200	[thread overview]
Message-ID: <20081014161157.0194c5c6@merlin.oi.pg.gda.pl> (raw)
In-Reply-To: <20081014145104.24aa96d0@merlin.oi.pg.gda.pl>

[-- Attachment #1: Type: text/plain, Size: 728 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.

Not it is after small changes and proper path in patch.

Signed-off-by: Adam Tla/lka <atlka@pg.gda.pl>

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_4.patch --]
[-- Type: text/x-patch, Size: 1908 bytes --]

--- drivers/char/tty_io_orig.c	2008-10-10 05:37:30.000000000 +0200
+++ drivers/char/tty_io.c	2008-10-14 15:58:54.000000000 +0200
@@ -2522,29 +2522,32 @@ 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);
+			put_pid(pgrp);
+		}
+		if (rpgrp != pgrp && rpgrp){
+			kill_pgrp(rpgrp, SIGWINCH, 1);
+			put_pid(rpgrp);
+		}
+	}
+	
 	return 0;
 }
 
@@ -2996,7 +2999,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:

  reply	other threads:[~2008-10-14 14:13 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                                   ` [PATCH 0/3] " Adam Tlałka
2008-10-14 14:11                                     ` Adam Tlałka [this message]
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=20081014161157.0194c5c6@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 \
    --subject='Re: [PATCH 0/4] SIGWINCH problem with terminal apps still alive' \
    /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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).