unix.7: Document ETOOMANYREFS for SCM_RIGHTS send exceeding RLIMIT_NOFILE limit

Reviewed-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Michael Kerrisk 2016-12-16 11:32:05 +01:00
parent 7df57849a5
commit dc4eea68b5
1 changed files with 27 additions and 0 deletions

View File

@ -534,6 +534,33 @@ versus
.TP
.B ESOCKTNOSUPPORT
Unknown socket type.
.TP
.B ETOOMANYREFS
This error can occur for
.BR sendmsg (2)
when sending a file descriptor as ancilary data over
a UNIX domain socket (see the description of
.BR SCM_RIGHTS ,
above).
It occurs if the number of "in-flight" file descriptors exceeds the
.B RLIMIT_NOFILE
resource limit and the caller does not have the
.BR CAP_SYS_RESOURCE
capability.
An in-flight file descriptor is one that has been sent using
.BR sendmsg (2)
but has not yet been accepted in the recipient process using
.BR recvmsg (2).
This error is diagnosed since Linux 4.5.
.\" commit 712f4aad406bb1ed67f3f98d04c044191f0ff593
In earlier kernel versions,
it was possible to place an unlimited number of file descriptors in flight,
by sending each file descriptor with
.BR sendmsg (2)
and then closing the file descriptor so that it was not accounted against the
.B RLIMIT_NOFILE
resource limit.
.PP
Other errors can be generated by the generic socket layer or
by the filesystem while generating a filesystem socket object.