mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 06:32:08 +00:00
net: Remove iocb argument from sendmsg and recvmsg
After TIPC doesn't depend on iocb argument in its internal implementations of sendmsg() and recvmsg() hooks defined in proto structure, no any user is using iocb argument in them at all now. Then we can drop the redundant iocb argument completely from kinds of implementations of both sendmsg() and recvmsg() in the entire networking stack. Cc: Christoph Hellwig <hch@lst.de> Suggested-by: Al Viro <viro@ZenIV.linux.org.uk> Signed-off-by: Ying Xue <ying.xue@windriver.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
39a0295f90
commit
1b78414047
75 changed files with 303 additions and 443 deletions
80
net/socket.c
80
net/socket.c
|
@ -610,45 +610,20 @@ void __sock_tx_timestamp(const struct sock *sk, __u8 *tx_flags)
|
|||
}
|
||||
EXPORT_SYMBOL(__sock_tx_timestamp);
|
||||
|
||||
static inline int __sock_sendmsg_nosec(struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *msg, size_t size)
|
||||
static inline int sock_sendmsg_nosec(struct socket *sock, struct msghdr *msg,
|
||||
size_t size)
|
||||
{
|
||||
return sock->ops->sendmsg(iocb, sock, msg, size);
|
||||
}
|
||||
|
||||
static inline int __sock_sendmsg(struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *msg, size_t size)
|
||||
{
|
||||
int err = security_socket_sendmsg(sock, msg, size);
|
||||
|
||||
return err ?: __sock_sendmsg_nosec(iocb, sock, msg, size);
|
||||
}
|
||||
|
||||
static int do_sock_sendmsg(struct socket *sock, struct msghdr *msg,
|
||||
size_t size, bool nosec)
|
||||
{
|
||||
struct kiocb iocb;
|
||||
int ret;
|
||||
|
||||
init_sync_kiocb(&iocb, NULL);
|
||||
ret = nosec ? __sock_sendmsg_nosec(&iocb, sock, msg, size) :
|
||||
__sock_sendmsg(&iocb, sock, msg, size);
|
||||
if (-EIOCBQUEUED == ret)
|
||||
ret = wait_on_sync_kiocb(&iocb);
|
||||
return ret;
|
||||
return sock->ops->sendmsg(sock, msg, size);
|
||||
}
|
||||
|
||||
int sock_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
|
||||
{
|
||||
return do_sock_sendmsg(sock, msg, size, false);
|
||||
int err = security_socket_sendmsg(sock, msg, size);
|
||||
|
||||
return err ?: sock_sendmsg_nosec(sock, msg, size);
|
||||
}
|
||||
EXPORT_SYMBOL(sock_sendmsg);
|
||||
|
||||
static int sock_sendmsg_nosec(struct socket *sock, struct msghdr *msg, size_t size)
|
||||
{
|
||||
return do_sock_sendmsg(sock, msg, size, true);
|
||||
}
|
||||
|
||||
int kernel_sendmsg(struct socket *sock, struct msghdr *msg,
|
||||
struct kvec *vec, size_t num, size_t size)
|
||||
{
|
||||
|
@ -744,47 +719,21 @@ void __sock_recv_ts_and_drops(struct msghdr *msg, struct sock *sk,
|
|||
}
|
||||
EXPORT_SYMBOL_GPL(__sock_recv_ts_and_drops);
|
||||
|
||||
static inline int __sock_recvmsg_nosec(struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *msg, size_t size, int flags)
|
||||
static inline int sock_recvmsg_nosec(struct socket *sock, struct msghdr *msg,
|
||||
size_t size, int flags)
|
||||
{
|
||||
return sock->ops->recvmsg(iocb, sock, msg, size, flags);
|
||||
return sock->ops->recvmsg(sock, msg, size, flags);
|
||||
}
|
||||
|
||||
static inline int __sock_recvmsg(struct kiocb *iocb, struct socket *sock,
|
||||
struct msghdr *msg, size_t size, int flags)
|
||||
int sock_recvmsg(struct socket *sock, struct msghdr *msg, size_t size,
|
||||
int flags)
|
||||
{
|
||||
int err = security_socket_recvmsg(sock, msg, size, flags);
|
||||
|
||||
return err ?: __sock_recvmsg_nosec(iocb, sock, msg, size, flags);
|
||||
}
|
||||
|
||||
int sock_recvmsg(struct socket *sock, struct msghdr *msg,
|
||||
size_t size, int flags)
|
||||
{
|
||||
struct kiocb iocb;
|
||||
int ret;
|
||||
|
||||
init_sync_kiocb(&iocb, NULL);
|
||||
ret = __sock_recvmsg(&iocb, sock, msg, size, flags);
|
||||
if (-EIOCBQUEUED == ret)
|
||||
ret = wait_on_sync_kiocb(&iocb);
|
||||
return ret;
|
||||
return err ?: sock_recvmsg_nosec(sock, msg, size, flags);
|
||||
}
|
||||
EXPORT_SYMBOL(sock_recvmsg);
|
||||
|
||||
static int sock_recvmsg_nosec(struct socket *sock, struct msghdr *msg,
|
||||
size_t size, int flags)
|
||||
{
|
||||
struct kiocb iocb;
|
||||
int ret;
|
||||
|
||||
init_sync_kiocb(&iocb, NULL);
|
||||
ret = __sock_recvmsg_nosec(&iocb, sock, msg, size, flags);
|
||||
if (-EIOCBQUEUED == ret)
|
||||
ret = wait_on_sync_kiocb(&iocb);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* kernel_recvmsg - Receive a message from a socket (kernel space)
|
||||
* @sock: The socket to receive the message from
|
||||
|
@ -861,8 +810,7 @@ static ssize_t sock_read_iter(struct kiocb *iocb, struct iov_iter *to)
|
|||
if (iocb->ki_nbytes == 0) /* Match SYS5 behaviour */
|
||||
return 0;
|
||||
|
||||
res = __sock_recvmsg(iocb, sock, &msg,
|
||||
iocb->ki_nbytes, msg.msg_flags);
|
||||
res = sock_recvmsg(sock, &msg, iocb->ki_nbytes, msg.msg_flags);
|
||||
*to = msg.msg_iter;
|
||||
return res;
|
||||
}
|
||||
|
@ -883,7 +831,7 @@ static ssize_t sock_write_iter(struct kiocb *iocb, struct iov_iter *from)
|
|||
if (sock->type == SOCK_SEQPACKET)
|
||||
msg.msg_flags |= MSG_EOR;
|
||||
|
||||
res = __sock_sendmsg(iocb, sock, &msg, iocb->ki_nbytes);
|
||||
res = sock_sendmsg(sock, &msg, iocb->ki_nbytes);
|
||||
*from = msg.msg_iter;
|
||||
return res;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue