diff --git a/include/net/inet_common.h b/include/net/inet_common.h index 4673bbfd2811..cec453c18f1d 100644 --- a/include/net/inet_common.h +++ b/include/net/inet_common.h @@ -33,7 +33,6 @@ int inet_accept(struct socket *sock, struct socket *newsock, int flags, bool kern); int inet_send_prepare(struct sock *sk); int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size); -void inet_splice_eof(struct socket *sock); ssize_t inet_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags); int inet_recvmsg(struct socket *sock, struct msghdr *msg, size_t size, diff --git a/include/net/tcp.h b/include/net/tcp.h index 4c838f7290dd..c3d56b337f35 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -332,7 +332,6 @@ int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size); int tcp_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t size); int tcp_sendmsg_fastopen(struct sock *sk, struct msghdr *msg, int *copied, size_t size, struct ubuf_info *uarg); -void tcp_splice_eof(struct socket *sock); int tcp_sendpage(struct sock *sk, struct page *page, int offset, size_t size, int flags); int tcp_sendpage_locked(struct sock *sk, struct page *page, int offset, diff --git a/include/net/udp.h b/include/net/udp.h index fa4cdbe55552..fee053bcd17c 100644 --- a/include/net/udp.h +++ b/include/net/udp.h @@ -269,7 +269,6 @@ int udp_get_port(struct sock *sk, unsigned short snum, int udp_err(struct sk_buff *, u32); int udp_abort(struct sock *sk, int err); int udp_sendmsg(struct sock *sk, struct msghdr *msg, size_t len); -void udp_splice_eof(struct socket *sock); int udp_push_pending_frames(struct sock *sk); void udp_flush_pending_frames(struct sock *sk); int udp_cmsg_send(struct sock *sk, struct msghdr *msg, u16 *gso_size); diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c index b653f5ab8987..ebb737ac9e89 100644 --- a/net/ipv4/af_inet.c +++ b/net/ipv4/af_inet.c @@ -832,21 +832,6 @@ int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size) } EXPORT_SYMBOL(inet_sendmsg); -void inet_splice_eof(struct socket *sock) -{ - const struct proto *prot; - struct sock *sk = sock->sk; - - if (unlikely(inet_send_prepare(sk))) - return; - - /* IPV6_ADDRFORM can change sk->sk_prot under us. */ - prot = READ_ONCE(sk->sk_prot); - if (prot->splice_eof) - prot->splice_eof(sock); -} -EXPORT_SYMBOL_GPL(inet_splice_eof); - ssize_t inet_sendpage(struct socket *sock, struct page *page, int offset, size_t size, int flags) { @@ -1066,7 +1051,6 @@ const struct proto_ops inet_stream_ops = { #ifdef CONFIG_MMU .mmap = tcp_mmap, #endif - .splice_eof = inet_splice_eof, .sendpage = inet_sendpage, .splice_read = tcp_splice_read, .read_sock = tcp_read_sock, @@ -1101,7 +1085,6 @@ const struct proto_ops inet_dgram_ops = { .read_skb = udp_read_skb, .recvmsg = inet_recvmsg, .mmap = sock_no_mmap, - .splice_eof = inet_splice_eof, .sendpage = inet_sendpage, .set_peek_off = sk_set_peek_off, #ifdef CONFIG_COMPAT @@ -1133,7 +1116,6 @@ static const struct proto_ops inet_sockraw_ops = { .sendmsg = inet_sendmsg, .recvmsg = inet_recvmsg, .mmap = sock_no_mmap, - .splice_eof = inet_splice_eof, .sendpage = inet_sendpage, #ifdef CONFIG_COMPAT .compat_ioctl = inet_compat_ioctl, diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 963c4e3075d2..07867010fecc 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -1490,22 +1490,6 @@ int tcp_sendmsg(struct sock *sk, struct msghdr *msg, size_t size) } EXPORT_SYMBOL(tcp_sendmsg); -void tcp_splice_eof(struct socket *sock) -{ - struct sock *sk = sock->sk; - struct tcp_sock *tp = tcp_sk(sk); - int mss_now, size_goal; - - if (!tcp_write_queue_tail(sk)) - return; - - lock_sock(sk); - mss_now = tcp_send_mss(sk, &size_goal, 0); - tcp_push(sk, 0, mss_now, tp->nonagle, size_goal); - release_sock(sk); -} -EXPORT_SYMBOL_GPL(tcp_splice_eof); - /* * Handle reading urgent data. BSD has very simple semantics for * this, no blocking and very strange errors 8) diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index d5225c745568..f39d67564a65 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c @@ -3067,7 +3067,6 @@ struct proto tcp_prot = { .keepalive = tcp_set_keepalive, .recvmsg = tcp_recvmsg, .sendmsg = tcp_sendmsg, - .splice_eof = tcp_splice_eof, .sendpage = tcp_sendpage, .backlog_rcv = tcp_v4_do_rcv, .release_cb = tcp_release_cb, diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c index e8dd2880ac9a..b49cb3df01bb 100644 --- a/net/ipv4/udp.c +++ b/net/ipv4/udp.c @@ -1332,21 +1332,6 @@ do_confirm: } EXPORT_SYMBOL(udp_sendmsg); -void udp_splice_eof(struct socket *sock) -{ - struct sock *sk = sock->sk; - struct udp_sock *up = udp_sk(sk); - - if (!up->pending || READ_ONCE(up->corkflag)) - return; - - lock_sock(sk); - if (up->pending && !READ_ONCE(up->corkflag)) - udp_push_pending_frames(sk); - release_sock(sk); -} -EXPORT_SYMBOL_GPL(udp_splice_eof); - int udp_sendpage(struct sock *sk, struct page *page, int offset, size_t size, int flags) { @@ -2922,7 +2907,6 @@ struct proto udp_prot = { .getsockopt = udp_getsockopt, .sendmsg = udp_sendmsg, .recvmsg = udp_recvmsg, - .splice_eof = udp_splice_eof, .sendpage = udp_sendpage, .release_cb = ip4_datagram_release_cb, .hash = udp_lib_hash, diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index a2f29ca51600..b5309ae87fd7 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c @@ -711,7 +711,6 @@ const struct proto_ops inet6_stream_ops = { #ifdef CONFIG_MMU .mmap = tcp_mmap, #endif - .splice_eof = inet_splice_eof, .sendpage = inet_sendpage, .sendmsg_locked = tcp_sendmsg_locked, .sendpage_locked = tcp_sendpage_locked, diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index ba9a22db5805..7be89dcfd5fc 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c @@ -2158,7 +2158,6 @@ struct proto tcpv6_prot = { .keepalive = tcp_set_keepalive, .recvmsg = tcp_recvmsg, .sendmsg = tcp_sendmsg, - .splice_eof = tcp_splice_eof, .sendpage = tcp_sendpage, .backlog_rcv = tcp_v6_do_rcv, .release_cb = tcp_release_cb, diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c index 2a65136dca77..7f49f69226a2 100644 --- a/net/ipv6/udp.c +++ b/net/ipv6/udp.c @@ -1657,20 +1657,6 @@ do_confirm: goto out; } -static void udpv6_splice_eof(struct socket *sock) -{ - struct sock *sk = sock->sk; - struct udp_sock *up = udp_sk(sk); - - if (!up->pending || READ_ONCE(up->corkflag)) - return; - - lock_sock(sk); - if (up->pending && !READ_ONCE(up->corkflag)) - udp_v6_push_pending_frames(sk); - release_sock(sk); -} - void udpv6_destroy_sock(struct sock *sk) { struct udp_sock *up = udp_sk(sk); @@ -1782,7 +1768,6 @@ struct proto udpv6_prot = { .getsockopt = udpv6_getsockopt, .sendmsg = udpv6_sendmsg, .recvmsg = udpv6_recvmsg, - .splice_eof = udpv6_splice_eof, .release_cb = ip6_datagram_release_cb, .hash = udp_lib_hash, .unhash = udp_lib_unhash,