Re: pty pairs in POXIX with devpts

C. Scott Ananian (cananian@lcs.mit.edu)
Tue, 28 Apr 1998 12:08:43 -0400 (EDT)


On Tue, 28 Apr 1998 hpa@transmeta.com (H. Peter Anvin) wrote:

> Followup to: <E0yTvTU-0006eI-00@taurus.cus.cam.ac.uk>
> By author: pjb1008@cam.ac.uk (Peter Benie)
> In newsgroup: linux.dev.kernel
> >
> > What does it do if both /dev/ptmx and /dev/pty?? devices exist?
> >
> > Suppose a user runs a program that allocates a pty by scanning the
> > /dev/pty?? devices and chowning the corresponding slave device when it
> > manages to open a pty master. The program may terminate without
> > cleaning up. (Let's say the user sent it a SIGQUIT.) The master and
> > slave sides of the pty are closed, so the pty can be allocated again,
> > but the owner of the slave device remains as the user who started the
> > program.
> >
> > Now suppose another user runs a program that allocates a pty using
> > /dev/ptmx and /dev/pts/??. There's a good chance that it will get the
> > pty from the program that just died. Now the pty slave is available
> > twice - once to the correct user in /dev/pts, and once to somebody
> > else as /dev/tty??.
> >
> > To make the device safe, you still have to use vhangup(), but now you
> > have to locate the corresponding /dev/tty?? entry and chown it, even
> > though you are using SysV-style pty allocation.
> >
> > IMO, it would be sensible for slave devices in /dev/pts to have a
> > different major number so that the two allocation schemes were better
> > separated from each other.
> >
>
> This is a very good point. Obviously you can't allocate it twice, but
> there is nastiness about having the two allocated from the same pool.
> One possibility is to remove the restriction that you need to have
> used /dev/ptmx in order for the device node to exist in /dev/pts, and
> make all the /dev/tty?? entries symlinks to /dev/pts. Does anyone
> know if that solution would work properly? I have a nasty feeling it
> wouldn't.

We dealt with this with devfs. IIRC, libc 5.X doesn't like symlinks to
ttys. glibc might handle this better, I don't recall. Richard Gooch
patched libc to work around this problem; I've cc'ed this message to him
for his comments.
--Scott
@ @
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-oOO-(_)-OOo-=-=-=-=-=
C. Scott Ananian: cananian@lcs.mit.edu / Declare the Truth boldly and
Laboratory for Computer Science/Crypto / without hindrance.
Massachusetts Institute of Technology /META-PARRESIAS AKOLUTOS:Acts 28:31
-.-. .-.. .. ..-. ..-. --- .-. -.. ... -.-. --- - - .- -. .- -. .. .- -.
PGP key available via finger and from http://www.pdos.lcs.mit.edu/~cananian

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu