summaryrefslogtreecommitdiff
path: root/net/ipv4/tcp_bpf.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/ipv4/tcp_bpf.c')
-rw-r--r--net/ipv4/tcp_bpf.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/net/ipv4/tcp_bpf.c b/net/ipv4/tcp_bpf.c
index 2e234d155b5e..338c5d90e550 100644
--- a/net/ipv4/tcp_bpf.c
+++ b/net/ipv4/tcp_bpf.c
@@ -286,10 +286,9 @@ msg_bytes_ready:
if (sock_flag(sk, SOCK_DONE))
goto out;
- if (sk->sk_err) {
- copied = sock_error(sk);
+ copied = sock_error(sk);
+ if (copied)
goto out;
- }
if (sk->sk_shutdown & RCV_SHUTDOWN)
goto out;
@@ -553,10 +552,9 @@ static int tcp_bpf_sendmsg(struct sock *sk, struct msghdr *msg, size_t size)
bool enospc = false;
u32 copy, osize;
- if (sk->sk_err) {
- err = -sk->sk_err;
+ err = -READ_ONCE(sk->sk_err);
+ if (err)
goto out_err;
- }
copy = msg_data_left(msg);
if (!sk_stream_memory_free(sk))