diff options
Diffstat (limited to 'net/ipv4/udp_bpf.c')
-rw-r--r-- | net/ipv4/udp_bpf.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/net/ipv4/udp_bpf.c b/net/ipv4/udp_bpf.c index 565a70040c57..9f5a5cdc38e6 100644 --- a/net/ipv4/udp_bpf.c +++ b/net/ipv4/udp_bpf.c @@ -36,8 +36,8 @@ static bool psock_has_data(struct sk_psock *psock) #define udp_msg_has_data(__sk, __psock) \ ({ udp_sk_has_data(__sk) || psock_has_data(__psock); }) -static int udp_msg_wait_data(struct sock *sk, struct sk_psock *psock, int flags, - long timeo, int *err) +static int udp_msg_wait_data(struct sock *sk, struct sk_psock *psock, + long timeo) { DEFINE_WAIT_FUNC(wait, woken_wake_function); int ret = 0; @@ -81,21 +81,17 @@ static int udp_bpf_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, msg_bytes_ready: copied = sk_msg_recvmsg(sk, psock, msg, len, flags); if (!copied) { - int data, err = 0; long timeo; + int data; timeo = sock_rcvtimeo(sk, nonblock); - data = udp_msg_wait_data(sk, psock, flags, timeo, &err); + data = udp_msg_wait_data(sk, psock, timeo); if (data) { if (psock_has_data(psock)) goto msg_bytes_ready; ret = sk_udp_recvmsg(sk, msg, len, nonblock, flags, addr_len); goto out; } - if (err) { - ret = err; - goto out; - } copied = -EAGAIN; } ret = copied; @@ -138,7 +134,7 @@ static int __init udp_bpf_v4_build_proto(void) udp_bpf_rebuild_protos(&udp_bpf_prots[UDP_BPF_IPV4], &udp_prot); return 0; } -core_initcall(udp_bpf_v4_build_proto); +late_initcall(udp_bpf_v4_build_proto); int udp_bpf_update_proto(struct sock *sk, struct sk_psock *psock, bool restore) { |