Commit Graph

3358 Commits

Author SHA1 Message Date
Michael Kerrisk 45adee316b posixoptions.7: ffix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-04-13 10:25:11 +02:00
Michael Kerrisk 742ce8ddec posixoptions.7: tfix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-04-13 10:25:11 +02:00
Michael Kerrisk 6b2300a2f3 posixoptions.7: ffix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-04-13 09:42:26 +02:00
Carlos O'Donell 233b0395d8 posixoptions.7: Expand XSI Options groups
We define in detail the X/Open System Interfaces i.e. _XOPEN_UNIX
and all of the X/Open System Interfaces (XSI) Options Groups.

The XSI options groups include encryption, realtime, advanced
realtime, realtime threads, advanced realtime threads, tracing,
streams, and legacy interfaces.

Signed-off-by: Carlos O'Donell <carlos@redhat.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-04-13 09:39:10 +02:00
Michael Kerrisk 7934bcdfdc unix.7: ERRORS: add EBADF for sending closed file descriptor with SCM_RIGHTS
As noted by Rusty Russell:

I was really surprised that sendmsg() returned EBADF on a valid fd;
turns out I was using sendmsg with SCM_RIGHTS to send a closed fd,
which gives EBADF (see test program below).

But this is only obliquely referenced in unix(7):

       SCM_RIGHTS
              Send or receive a set  of  open  file  descriptors
              from  another  process.  The data portion contains
              an integer array of  the  file  descriptors.   The
              passed file descriptors behave as though they have
              been created with dup(2).

EBADF is not mentioned in the unix(7) ERRORS (it's mentioned in
dup(2)).

int fdpass_send(int sockout, int fd)
{
	/* From the cmsg(3) manpage: */
	struct msghdr msg = { 0 };
	struct cmsghdr *cmsg;
	struct iovec iov;
	char c = 0;
	union {         /* Ancillary data buffer, wrapped in a union
			   in order to ensure it is suitably aligned */
		char buf[CMSG_SPACE(sizeof(fd))];
		struct cmsghdr align;
	} u;

	msg.msg_control = u.buf;
	msg.msg_controllen = sizeof(u.buf);
	memset(&u, 0, sizeof(u));
	cmsg = CMSG_FIRSTHDR(&msg);
	cmsg->cmsg_level = SOL_SOCKET;
	cmsg->cmsg_type = SCM_RIGHTS;
	cmsg->cmsg_len = CMSG_LEN(sizeof(fd));
	memcpy(CMSG_DATA(cmsg), &fd, sizeof(fd));

	msg.msg_name = NULL;
	msg.msg_namelen = 0;
	msg.msg_iov = &iov;
	msg.msg_iovlen = 1;
	msg.msg_flags = 0;

	/* Keith Packard reports that 0-length sends don't work, so we
	 * always send 1 byte. */
	iov.iov_base = &c;
	iov.iov_len = 1;

	return sendmsg(sockout, &msg, 0);
}

int fdpass_recv(int sockin)
{
	/* From the cmsg(3) manpage: */
	struct msghdr msg = { 0 };
	struct cmsghdr *cmsg;
	struct iovec iov;
	int fd;
	char c;
	union {         /* Ancillary data buffer, wrapped in a union
			   in order to ensure it is suitably aligned */
		char buf[CMSG_SPACE(sizeof(fd))];
		struct cmsghdr align;
	} u;

	msg.msg_control = u.buf;
	msg.msg_controllen = sizeof(u.buf);

	msg.msg_name = NULL;
	msg.msg_namelen = 0;
	msg.msg_iov = &iov;
	msg.msg_iovlen = 1;
	msg.msg_flags = 0;

	iov.iov_base = &c;
	iov.iov_len = 1;

	if (recvmsg(sockin, &msg, 0) < 0)
		return -1;

	cmsg = CMSG_FIRSTHDR(&msg);
        if (!cmsg
	    || cmsg->cmsg_len != CMSG_LEN(sizeof(fd))
	    || cmsg->cmsg_level != SOL_SOCKET
	    || cmsg->cmsg_type != SCM_RIGHTS) {
		errno = -EINVAL;
		return -1;
	}

	memcpy(&fd, CMSG_DATA(cmsg), sizeof(fd));
	return fd;
}

static void child(int sockfd)
{
	int newfd = fdpass_recv(sockfd);
	assert(newfd < 0);
	exit(0);
}

int main(void)
{
	int sv[2];
	int pid, ret;

	assert(socketpair(AF_UNIX, SOCK_STREAM, 0, sv) == 0);

	pid = fork();
	if (pid == 0) {
		close(sv[1]);
		child(sv[0]);
	}

	close(sv[0]);
	ret = fdpass_send(sv[1], sv[0]);
	printf("fdpass of bad fd return %i (%s)\n", ret, strerror(errno));
	return 0;
}

Reported-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-04-12 10:55:29 +02:00
Michael Kerrisk d3e7786def unix.7: wfix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-04-12 10:42:34 +02:00
Konstantin Grinemayer 04c8a02088 keyring.7: wfix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-04-12 08:46:42 +02:00
Michael Kerrisk 3f6061d025 socket.7: Fix error in SO_INCOMING_CPU code snippet
The last argument is passed by value, not reference.
Reported-by: Tomi Salminen <tsalminen@forcepoint.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-03-27 22:06:52 +02:00
Michael Kerrisk d8c64e25f8 network_namespaces.7: Add cross reference to unix(7)
For further information on UNIX domain abstract sockets.

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-03-16 08:50:36 +01:00
Michael Kerrisk 39ad46695f time.7: Mention clock_gettime()/clock_settime() rather than [gs]ettimeofday()
gettimeofday() is declared obsolete by POSIX. Mention instead
the modern APIs for working with the realtime clock.

See https://bugzilla.kernel.org/show_bug.cgi?id=199049

Reported-by: Enrique Garcia <cquike@arcor.de>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-03-16 08:50:36 +01:00
Michael Kerrisk 6b49df2229 mount_namespaces.7: Note another case where shared "peer groups" are formed
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-02-25 16:42:16 +01:00
Michael Kerrisk 46af719866 mount_namespaces.7: ffix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-02-25 16:37:08 +01:00
Michael Kerrisk a21658aad3 network_namespaces.7: Network namespaces isolate the UNIX domain abstract socket namespace
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-02-24 23:04:53 +01:00
Michael Kerrisk aeeb48005e user_namespaces.7: wfix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-02-23 10:38:47 +01:00
Michael Kerrisk 1a7e08e367 namespaces.7: Note an idiosyncracy of /proc/[pid]/ns/pid_for_children
/proc/[pid]/ns/pid_for_children has a value only after first
child is created in PID namespace. Verified by experiment.

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-02-21 17:31:48 +01:00
Michael Kerrisk 0813749503 capabilities.7: remove redundant mention of PTRACE_SECCOMP_GET_FILTER
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-02-21 10:38:17 +01:00
Michael Kerrisk 9863b9acfe xattr.7: SEE ALSO: add selinux(8)
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-02-21 08:43:14 +01:00
Michael Kerrisk 7747ed9789 cgroups.7: cgroup.events transitions generate POLLERR as well as POLLPRI
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-02-10 09:46:14 +01:00
Michael Kerrisk 2cd9bbfa48 Removed trailing white space at end of lines 2018-02-02 07:48:33 +01:00
Michael Kerrisk 8538a62b4c iconv.1, bpf.2, copy_file_range.2, fcntl.2, memfd_create.2, mlock.2, mount.2, mprotect.2, perf_event_open.2, pkey_alloc.2, prctl.2, read.2, recvmmsg.2, s390_sthyi.2, seccomp.2, sendmmsg.2, syscalls.2, unshare.2, write.2, errno.3, fgetpwent.3, fts.3, pthread_rwlockattr_setkind_np.3, fuse.4, veth.4, capabilities.7, cgroups.7, ip.7, man-pages.7, namespaces.7, network_namespaces.7, sched.7, socket.7, user_namespaces.7, iconvconfig.8: tstamp
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-02-02 07:38:54 +01:00
Michael Kerrisk 93b96116f0 vsock.7: Add license and copyright
Stefan noted on the mailing list that selection of the
verbatim license was fine.

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-02-01 22:23:28 +01:00
Jakub Wilk 7a1cddd289 cgroups.7: tfix
Signed-off-by: Jakub Wilk <jwilk@jwilk.net>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-26 19:58:40 +01:00
Michael Kerrisk 42dfc34c33 capabilities.7: spfix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-13 20:58:58 +01:00
Michael Kerrisk cd7f4c4958 cgroups.7: Add a detail on delegation of cgroup.threads
Some notes from a conversation with Tejun Heo:

    Subject: Re: cgroups(7): documenting cgroups v2 delegation
    Date: Wed, 10 Jan 2018 14:27:26 -0800
    From: Tejun Heo <tj@kernel.org>

    > > 1. When delegating, cgroup.threads should be delegated.  Doing that
    > >    selectively doesn't achieve anything meaningful.
    >
    > Understood. But surely delegating cgroup.threads is effectively
    > meaningless when delegating a "domain" cgroup tree? (Obviously it's
    > not harmful to delegate the the cgroup.threads file in this case;
    > it's just not useful to do so.)

    Yeap, unless we can somehow support non-root mixed domains.

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:52:26 +01:00
Michael Kerrisk 6dc513cd38 cgroups.7: Subhierarchy under delegated subtree will be owned by delegatee
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:47:12 +01:00
Michael Kerrisk 7b327dd5f3 cgroups.7: Add a detail on delegation of cgroup.threads
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:47:12 +01:00
Michael Kerrisk d84e558ef3 cgroups.7: Define containment rules for cgroup.threads
Reviewed-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:47:12 +01:00
Michael Kerrisk 446d164326 cgroups.7: Minor wording fixes
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:47:12 +01:00
Michael Kerrisk c7913617f7 cgroups.7: cgroup.threads should appear in /sys/kernel/cgroup/delegate
As discussed with Tejun Heo and Roman Gushchin, the
omission of this file from the list is a bug, and
is about to be fixed by a kernel patch from Roman.

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:47:12 +01:00
Michael Kerrisk 6125483529 cgroups.7: Add some rationale for the existence of the "domain invalid" cgroup type
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:47:12 +01:00
Michael Kerrisk dc581e07a4 cgroups.7: wfix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:47:12 +01:00
Michael Kerrisk 0736182888 cgroups.7: Point out that 'nsdelegate' can also be applied on a remount
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:47:12 +01:00
Michael Kerrisk 277559a45c cgroups.7: Clarify that cgroup.controllers is read-only
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:47:12 +01:00
Michael Kerrisk 639b6c8c57 cgroups.7: cgroup.threads is also delegated if delegating a threaded subtree
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-11 00:46:56 +01:00
Michael Kerrisk 4178f13224 cgroups.7: cgroup.threads is writable only inside a threaded subtree
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk b2c3e72073 cgroups.7: ffix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk 2e69ff536c cgroups.7: ffix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk d311c798b7 cgroups.7: Add a more complete description of cgroup v1 named hierarchies
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk 218eadf4ae cgroups.7: srcfix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk a76748a0e1 cgroups.7: Remove accidentally duplicated NOTES and ERRORS sections
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk c56ec51ba6 cgroups.7: Elaborate a little on problems of splitting threads across cgroups in v1
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk 7b574df5c6 cgroups.7: tfix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk 59af05147e cgroups.7: Document 'release_agent' mount option
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk 56769384da cgroups.7: Rework text on threads and cgroups v2
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk 980f1827b0 cgroups.7: wfix
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk fcf115f54f cgroups.7: wfix
Reported-by: Roman Gushchin <guro@fb.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk d1d4f69503 cgroups.7: srcfix: remove FIXME
Tejun noted that his statement wasn't correct.

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk ed3f4f34fc cgroups.7: Document cgroup v2 delegation via the 'nsdelegate' mount option
Reviewed-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk 148e0800eb cgroups.7: Modify cgroup v2 delegation subheading
We are about to add description of a different kind
of delegation (nsdelegate) with its own subheading.

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00
Michael Kerrisk 27b086e998 cgroups.7: Add a subheading for delegation containment rules
This is useful in preparation for adding discussion of the
'nsdelegate' mount option.

Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
2018-01-10 00:35:47 +01:00