mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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:

  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®