Commit e5493796 authored by Jens Axboe's avatar Jens Axboe
Browse files

net: remove cmsg restriction from io_uring based send/recvmsg calls



No need to restrict these anymore, as the worker threads are direct
clones of the original task. Hence we know for a fact that we can
support anything that the regular task can.

Since the only user of proto_ops->flags was to flag PROTO_CMSG_DATA_ONLY,
kill the member and the flag definition too.

Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 2587890b
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -42,8 +42,6 @@ struct net;
#define SOCK_PASSCRED		3
#define SOCK_PASSSEC		4

#define PROTO_CMSG_DATA_ONLY	0x0001

#ifndef ARCH_HAS_SOCKET_TYPES
/**
 * enum sock_type - Socket types
@@ -138,7 +136,6 @@ typedef int (*sk_read_actor_t)(read_descriptor_t *, struct sk_buff *,

struct proto_ops {
	int		family;
	unsigned int	flags;
	struct module	*owner;
	int		(*release)   (struct socket *sock);
	int		(*bind)	     (struct socket *sock,
+0 −1
Original line number Diff line number Diff line
@@ -1021,7 +1021,6 @@ static int inet_compat_ioctl(struct socket *sock, unsigned int cmd, unsigned lon

const struct proto_ops inet_stream_ops = {
	.family		   = PF_INET,
	.flags		   = PROTO_CMSG_DATA_ONLY,
	.owner		   = THIS_MODULE,
	.release	   = inet_release,
	.bind		   = inet_bind,
+0 −1
Original line number Diff line number Diff line
@@ -665,7 +665,6 @@ int inet6_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,

const struct proto_ops inet6_stream_ops = {
	.family		   = PF_INET6,
	.flags		   = PROTO_CMSG_DATA_ONLY,
	.owner		   = THIS_MODULE,
	.release	   = inet6_release,
	.bind		   = inet6_bind,
+0 −10
Original line number Diff line number Diff line
@@ -2411,10 +2411,6 @@ static int ___sys_sendmsg(struct socket *sock, struct user_msghdr __user *msg,
long __sys_sendmsg_sock(struct socket *sock, struct msghdr *msg,
			unsigned int flags)
{
	/* disallow ancillary data requests from this path */
	if (msg->msg_control || msg->msg_controllen)
		return -EINVAL;

	return ____sys_sendmsg(sock, msg, flags, NULL, 0);
}

@@ -2623,12 +2619,6 @@ long __sys_recvmsg_sock(struct socket *sock, struct msghdr *msg,
			struct user_msghdr __user *umsg,
			struct sockaddr __user *uaddr, unsigned int flags)
{
	if (msg->msg_control || msg->msg_controllen) {
		/* disallow ancillary data reqs unless cmsg is plain data */
		if (!(sock->ops->flags & PROTO_CMSG_DATA_ONLY))
			return -EINVAL;
	}

	return ____sys_recvmsg(sock, msg, umsg, uaddr, flags, 0);
}