mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mauro Carvalho Chehab <mchehab@infradead.org>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: LKML <linux-kernel@vger.kernel.org>,
	Kay Sievers <kay.sievers@vrfy.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alan Cox <alan@linux.intel.com>,
	Greg Kroah-Hartman <gregkh@suse.de>
Subject: [PATCH v2 RFC] char/tty_io: fix legacy pty name when more than 256 pty devices are requested
Date: Tue, 8 Sep 2009 15:59:06 -0300	[thread overview]
Message-ID: <20090908155906.0d30f4bc@caramujo.chehab.org> (raw)
In-Reply-To: <20090908185926.042ba9aa@lxorguk.ukuu.org.uk>

With kernel 2.6, the number of minors is not 255 anymore. So, it is
possible to have more than 255 pty devices.

However, the pty_line_name() only provides device names for the first
256 tty/pty devices.

This is a bug, since there's no limits for the maximum number of legacy
pty devices at Kconfig or at pty.legacy_count.

This patch preserves the old nomenclature for tty/pty devices for the
first 256 devices. After that, it names the next devices as:
	ttyf0000-ttfpffff	(pty slave)
	ptyf0000-ttyfffff	(pty master)

This way, the existing udev rules for legacy pty devices to not
break. Only after minor 255, it will start to use the new nomenclature.

Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

---

Version 2: devices.txt namespace doc were updated accordingly.

diff --git a/Documentation/devices.txt b/Documentation/devices.txt
index 53d64d3..cfd3e20 100644
--- a/Documentation/devices.txt
+++ b/Documentation/devices.txt
@@ -114,18 +114,27 @@ Your cooperation is appreciated.
 		the initrd.
 
   2 char	Pseudo-TTY masters
-		  0 = /dev/ptyp0	First PTY master
-		  1 = /dev/ptyp1	Second PTY master
+		    0 = /dev/ptyp0	First PTY master
+		    1 = /dev/ptyp1	Second PTY master
 		    ...
-		255 = /dev/ptyef	256th PTY master
+		  255 = /dev/ptyef	256th PTY master
+		  256 = /dev/ptyf0000	257th PTY slave
+		  257 = /dev/ptyf0001	258th PTY slave
+		   ...
+		65791 = /dev/ptyfffff	65791 PTY slave
 
-		Pseudo-tty's are named as follows:
+		Pseudo-tty's up to 256 are named as follows:
 		* Masters are "pty", slaves are "tty";
 		* the fourth letter is one of pqrstuvwxyzabcde indicating
 		  the 1st through 16th series of 16 pseudo-ttys each, and
 		* the fifth letter is one of 0123456789abcdef indicating
 		  the position within the series.
 
+		Pseudo-tty's above 256 are named as follows:
+		* Masters are "ptyf", slaves are "ttyf";
+		* the fifth to eighth letters are hexadecimal digits
+		  indicating the position within the series.
+
 		These are the old-style (BSD) PTY devices; Unix98
 		devices are on major 128 and above and use the PTY
 		master multiplex (/dev/ptmx) to acquire a PTY on
@@ -189,10 +198,14 @@ Your cooperation is appreciated.
 		the drive type is insignificant for these devices.
 
   3 char	Pseudo-TTY slaves
-		  0 = /dev/ttyp0	First PTY slave
-		  1 = /dev/ttyp1	Second PTY slave
-		    ...
-		255 = /dev/ttyef	256th PTY slave
+		    0 = /dev/ttyp0	First PTY slave
+		    1 = /dev/ttyp1	Second PTY slave
+		  ...
+		  255 = /dev/ttyef	256th PTY slave
+		  256 = /dev/ttyf0000	257th PTY slave
+		  257 = /dev/ttyf0001	258th PTY slave
+		   ...
+		65791 = /dev/ttyfffff	65791 PTY slave
 
 		These are the old-style (BSD) PTY devices; Unix98
 		devices are on major 136 and above.
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index a3afa0c..fdea89b 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -1110,9 +1110,15 @@ static void pty_line_name(struct tty_driver *driver, int index, char *p)
 {
 	int i = index + driver->name_base;
 	/* ->name is initialized to "ttyp", but "tty" is expected */
-	sprintf(p, "%s%c%x",
-		driver->subtype == PTY_TYPE_SLAVE ? "tty" : driver->name,
-		ptychar[i >> 4 & 0xf], i & 0xf);
+	if (i < 256) {
+		sprintf(p, "%s%c%x",
+				driver->subtype == PTY_TYPE_SLAVE ? "tty" : driver->name,
+				ptychar[i >> 4 & 0xf], i & 0xf);
+	} else {	/* Up to 4096 */
+		sprintf(p, "%sf%04x",
+				driver->subtype == PTY_TYPE_SLAVE ? "tty" : driver->name,
+				i - 256);
+	}
 }
 
 /**







Cheers,
Mauro

  parent reply	other threads:[~2009-09-08 18:59 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-08 17:49 [PATCH " Mauro Carvalho Chehab
2009-09-08 17:59 ` Alan Cox
2009-09-08 18:56   ` Mauro Carvalho Chehab
2009-09-08 18:59   ` Mauro Carvalho Chehab [this message]
2009-09-08 22:48 ` H. Peter Anvin
2009-09-08 23:33   ` Mauro Carvalho Chehab
2009-09-09  0:26     ` H. Peter Anvin
2009-09-09  2:54       ` Mauro Carvalho Chehab
2009-09-09  4:46         ` H. Peter Anvin
2009-09-10  4:05           ` [PATCH] " Mauro Carvalho Chehab
2009-09-10  6:21             ` H. Peter Anvin
2009-09-10 12:33               ` Mauro Carvalho Chehab
2009-09-10 14:07                 ` Alan Cox
2009-09-10 15:57                   ` H. Peter Anvin
2009-09-10 16:08                   ` H. Peter Anvin
2009-09-10 19:12                     ` Mauro Carvalho Chehab
2009-09-10 19:17                       ` H. Peter Anvin
2009-09-10 20:05                         ` Mauro Carvalho Chehab
2009-09-10 20:35                           ` H. Peter Anvin
2009-09-10 23:23                       ` Alan Cox
2009-09-10 23:25                         ` H. Peter Anvin
2009-09-11  8:43                     ` Alan Cox
2009-09-10  4:13           ` [PATCH RFC] " Mauro Carvalho Chehab
2009-09-10  5:33             ` H. Peter Anvin
2009-09-10 12:18               ` Mauro Carvalho Chehab
2009-09-10 10:19             ` Alan Cox

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=20090908155906.0d30f4bc@caramujo.chehab.org \
    --to=mchehab@infradead.org \
    --cc=akpm@linux-foundation.org \
    --cc=alan@linux.intel.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=gregkh@suse.de \
    --cc=kay.sievers@vrfy.org \
    --cc=linux-kernel@vger.kernel.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®