All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Brauner <christian.brauner-Z7WLFzj8eWMS+FvcfC7Uqw@public.gmane.org>
To: "Michael Kerrisk (man-pages)"
	<mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: "Dmitry V. Levin" <ldv-u2l5PoMzF/Vg9hUCZPvPmw@public.gmane.org>,
	linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	"Serge Hallyn" <serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org>,
	"Stéphane Graber"
	<stgraber-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH] ttyname.3: document ENODEV error code
Date: Fri, 24 Mar 2017 15:53:42 +0100	[thread overview]
Message-ID: <CAPP7u0Ux2_pKFdS1X0_5SbR_MmvAmcR7+f=XcUOXWJ1Fr0naWA@mail.gmail.com> (raw)
In-Reply-To: <a3314168-ac99-28ef-2916-4da65adc8377-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>

Sorry, for the late reply.

On Fri, Mar 24, 2017 at 3:40 PM, Michael Kerrisk (man-pages)
<mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
> Hi Dmitry,
>
> On 03/20/2017 10:58 PM, Dmitry V. Levin wrote:
>> Hi,
>>
>> On Mon, Mar 20, 2017 at 10:02:15PM +0100, Christian Brauner wrote:
>>> Hi,
>>>
>>> Thanks Dmitry. One comment
>>>
>>> On 20 Mar 2017 9:51 p.m., "Dmitry V. Levin" <ldv-u2l5PoMzF/Vg9hUCZPvPmw@public.gmane.org> wrote:
>>>
>>> ---
>>>  man3/ttyname.3 | 8 +++++++-
>>>  1 file changed, 7 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/man3/ttyname.3 b/man3/ttyname.3
>>> index 14c24e7..0be50c6 100644
>>> --- a/man3/ttyname.3
>>> +++ b/man3/ttyname.3
>>> @@ -71,6 +71,11 @@ File descriptor does not refer to a terminal device.
>>>  .RB ( ttyname_r ())
>>>  .I buflen
>>>  was too small to allow storing the pathname.
>>> +.TP
>>> +.\" glibc commit 15e9a4f378c8607c2ae1aa465436af4321db0e23
>>> +.B ENODEV
>>> +File descriptor refers to a slave pseudoterminal device
>>> +but the corresponding pathname could not be found.
>>>
>>> I think it would be good to explicitly mention that ENODEV is set in case
>>> the fd does not refer to a pts device in its namespace. Otherwise users
>>> might take this as an indication that this is a more generic error which is
>>> not the case.
>>
>> In fact, this is a more generic error than a namespace mismatch, although
>> the latter is the most likely reason.
>>
>> Imagine that the corresponding file inside /dev/pts/ is not available for
>> some reason and the stat call has failed.  This situation could be
>> reproduced e.g. by bind-mounting an empty directory to /dev/pts.
>> A subsequent ttyname invocation would end up with ENODEV because the device
>> is literally not available although it's withing the same namespace.
>>
>> I don't mind if you change the description to mention the namespace case
>> as the most likely, but please do not make it the only case when ENODEV
>> can happen.
>
> I'm open on this point. If someone wants to write a suitable patch, I'll
> probably take it.

This point is in my opinion crucial. The over-mounting scenario is
still a valid case for most programs that do not actually care about
what /dev/pts/<n> is actually used to go on which is a nice side-effect
of the patch. The namespace part should be mentioned since ttyname{_r}()
explicitly does not return anything when it detects that
/proc/self/fd/<n> points to /dev/pts/<n> but /dev/pts/<n> does not exist
in the same namespace. This was the original motivation when we
wrote the patch. So users that get ENODEV from ttyname{_r}() should
be aware that resolving the symlink manually afterwards doesn't give them
a /dev/pts/<n> path valid in the current namespace.

I'll put this on my TODO list but if someone is willing to send a
patch right away
please do so. :)

Christian
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2017-03-24 14:53 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-20 20:51 [PATCH] ttyname.3: document ENODEV error code Dmitry V. Levin
     [not found] ` <CAPP7u0WL2wa2MLavq22q616=-pHNPyNXqLpPGzR4JqYzGA16-A@mail.gmail.com>
     [not found]   ` <CAPP7u0WL2wa2MLavq22q616=-pHNPyNXqLpPGzR4JqYzGA16-A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-20 21:58     ` Dmitry V. Levin
     [not found]       ` <20170320215823.GA28075-u2l5PoMzF/Vg9hUCZPvPmw@public.gmane.org>
2017-03-24 14:40         ` Michael Kerrisk (man-pages)
     [not found]           ` <a3314168-ac99-28ef-2916-4da65adc8377-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-03-24 14:53             ` Christian Brauner [this message]
     [not found]               ` <CAPP7u0Ux2_pKFdS1X0_5SbR_MmvAmcR7+f=XcUOXWJ1Fr0naWA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-26 12:47                 ` Michael Kerrisk (man-pages)
     [not found]                   ` <c3bc0470-b6a6-2ecb-dcb2-97e355c1e307-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-04-19 13:21                     ` Michael Kerrisk (man-pages)
     [not found]                       ` <8c7cb5df-bc2f-94d4-0a17-6efdf86f43b3-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2017-04-21 20:05                         ` [PATCH] ttyname(3): add NOTES section Christian Brauner
     [not found]                           ` <20170421200509.23616-1-christian.brauner-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.org>
2017-04-23 11:52                             ` Dmitry V. Levin
     [not found]                               ` <20170423115237.GA26862-u2l5PoMzF/Vg9hUCZPvPmw@public.gmane.org>
2017-04-23 12:11                                 ` Michael Kerrisk (man-pages)
2017-04-23 17:58                             ` Michael Kerrisk (man-pages)
     [not found] ` <20170320205104.GA27434-u2l5PoMzF/Vg9hUCZPvPmw@public.gmane.org>
2017-03-24 14:40   ` [PATCH] ttyname.3: document ENODEV error code Michael Kerrisk (man-pages)

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='CAPP7u0Ux2_pKFdS1X0_5SbR_MmvAmcR7+f=XcUOXWJ1Fr0naWA@mail.gmail.com' \
    --to=christian.brauner-z7wlfzj8ewms+fvcfc7uqw@public.gmane.org \
    --cc=ldv-u2l5PoMzF/Vg9hUCZPvPmw@public.gmane.org \
    --cc=linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=serge-A9i7LUbDfNHQT0dZR+AlfA@public.gmane.org \
    --cc=stgraber-GeWIH/nMZzLQT0dZR+AlfA@public.gmane.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.