summaryrefslogtreecommitdiff
path: root/net/mptcp/pm_netlink.c
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2023-03-15 23:57:45 +0300
committerDavid S. Miller <davem@davemloft.net>2023-03-17 11:25:05 +0300
commit9ae8e5ad99b8ebcd3d3dd46075f3825e6f08f063 (patch)
tree3091b5beb21935da2d44eebc4489f59102a64161 /net/mptcp/pm_netlink.c
parente13ec3da05d130f0d10da8e1fbe1be26dcdb0e27 (diff)
downloadlinux-9ae8e5ad99b8ebcd3d3dd46075f3825e6f08f063.tar.xz
mptcp: annotate lockless accesses to sk->sk_err
mptcp_poll() reads sk->sk_err without socket lock held/owned. Add READ_ONCE() and WRITE_ONCE() to avoid load/store tearing. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/mptcp/pm_netlink.c')
-rw-r--r--net/mptcp/pm_netlink.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/mptcp/pm_netlink.c b/net/mptcp/pm_netlink.c
index 56628b52d100..cbaa1b49f7fe 100644
--- a/net/mptcp/pm_netlink.c
+++ b/net/mptcp/pm_netlink.c
@@ -2019,7 +2019,7 @@ static int mptcp_event_put_token_and_ssk(struct sk_buff *skb,
nla_put_s32(skb, MPTCP_ATTR_IF_IDX, ssk->sk_bound_dev_if))
return -EMSGSIZE;
- sk_err = ssk->sk_err;
+ sk_err = READ_ONCE(ssk->sk_err);
if (sk_err && sk->sk_state == TCP_ESTABLISHED &&
nla_put_u8(skb, MPTCP_ATTR_ERROR, sk_err))
return -EMSGSIZE;