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