multiple devpts mounts not supported in sysdeps/unix/sysv/linux/ptsname.c:_ptsname_internal()

Serge E. Hallyn serge.hallyn@canonical.com
Tue Oct 11 22:35:00 GMT 2011


Quoting Andreas Schwab (schwab@linux-m68k.org):
> "Serge E. Hallyn" <serge.hallyn@canonical.com> writes:
> 
> > grantpt, ptsname, and ptsname_r make use of _ptsname_internal().  That
> > function works by appending the TIOCGPTN result to "/dev/pts".  The
> > path /dev/pts is hardcoded.  That means that if you call grantpt on an
> > fd from /chroot/dev/pts, and /dev/pts/0 (for instance) does not exist
> > on the host, you'll (wrongly) get back an error.  This has been seen with
> > libvirt (and is easly to verify with a simple testcase).
> 
> If you want to use /dev/pts from the chroot you must run grantpt in the
> chroot.  Since getpt or posix_openpt always returns an fd from the
> system /dev/pts this is not an unreasonable restriction.

Ok (I suspected that would be the feeling :).  I think it's unfortunate
but not unreasonable.  I think the manpages are unreasonable (since
getpt says it's equivalent to open("/dev/ptmx", ..., and grantpt says
nothing about restrictions on the passed-in fd), but as Mike points out
those are not maintained here :)

So I'll pursue a manpage update.

thanks,
-serge



More information about the Libc-alpha mailing list