diff options
| author | Dmitry Torokhov <[email protected]> | 2023-05-01 15:20:08 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-05-01 15:20:08 -0700 | 
| commit | 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e (patch) | |
| tree | d57f3a63479a07b4e0cece029886e76e04feb984 /net/ipv4/tcp_bpf.c | |
| parent | 5dc63e56a9cf8df0b59c234a505a1653f1bdf885 (diff) | |
| parent | 53bea86b5712c7491bb3dae12e271666df0a308c (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.4 merge window.
Diffstat (limited to 'net/ipv4/tcp_bpf.c')
| -rw-r--r-- | net/ipv4/tcp_bpf.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/net/ipv4/tcp_bpf.c b/net/ipv4/tcp_bpf.c index 94aad3870c5f..ebf917511937 100644 --- a/net/ipv4/tcp_bpf.c +++ b/net/ipv4/tcp_bpf.c @@ -6,6 +6,7 @@  #include <linux/bpf.h>  #include <linux/init.h>  #include <linux/wait.h> +#include <linux/util_macros.h>  #include <net/inet_common.h>  #include <net/tls.h> @@ -185,6 +186,9 @@ static int tcp_bpf_recvmsg_parser(struct sock *sk,  	if (unlikely(flags & MSG_ERRQUEUE))  		return inet_recv_error(sk, msg, len, addr_len); +	if (!len) +		return 0; +  	psock = sk_psock_get(sk);  	if (unlikely(!psock))  		return tcp_recvmsg(sk, msg, len, flags, addr_len); @@ -243,6 +247,9 @@ static int tcp_bpf_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,  	if (unlikely(flags & MSG_ERRQUEUE))  		return inet_recv_error(sk, msg, len, addr_len); +	if (!len) +		return 0; +  	psock = sk_psock_get(sk);  	if (unlikely(!psock))  		return tcp_recvmsg(sk, msg, len, flags, addr_len); @@ -639,10 +646,9 @@ EXPORT_SYMBOL_GPL(tcp_bpf_update_proto);   */  void tcp_bpf_clone(const struct sock *sk, struct sock *newsk)  { -	int family = sk->sk_family == AF_INET6 ? TCP_BPF_IPV6 : TCP_BPF_IPV4;  	struct proto *prot = newsk->sk_prot; -	if (prot == &tcp_bpf_prots[family][TCP_BPF_BASE]) +	if (is_insidevar(prot, tcp_bpf_prots))  		newsk->sk_prot = sk->sk_prot_creator;  }  #endif /* CONFIG_BPF_SYSCALL */  |