diff options
author | Eric Dumazet <edumazet@google.com> | 2019-11-05 00:38:43 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-11-05 21:22:30 -0500 |
commit | f75359f3ac855940c5718af10ba089b8977bf339 (patch) | |
tree | b41cebe578c5b17b8bb50e837008c3b92e504885 | |
parent | e7a86c687e64ab24f88330ad24ecc9442ce40c5a (diff) |
net: prevent load/store tearing on sk->sk_stamp
Add a couple of READ_ONCE() and WRITE_ONCE() to prevent
load-tearing and store-tearing in sock_read_timestamp()
and sock_write_timestamp()
This might prevent another KCSAN report.
Fixes: 3a0ed3e96197 ("sock: Make sock->sk_stamp thread-safe")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Deepa Dinamani <deepa.kernel@gmail.com>
Acked-by: Deepa Dinamani <deepa.kernel@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/net/sock.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/net/sock.h b/include/net/sock.h index 8f9adcfac41b..718e62fbe869 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
@@ -2342,7 +2342,7 @@ static inline ktime_t sock_read_timestamp(struct sock *sk) | |||
2342 | 2342 | ||
2343 | return kt; | 2343 | return kt; |
2344 | #else | 2344 | #else |
2345 | return sk->sk_stamp; | 2345 | return READ_ONCE(sk->sk_stamp); |
2346 | #endif | 2346 | #endif |
2347 | } | 2347 | } |
2348 | 2348 | ||
@@ -2353,7 +2353,7 @@ static inline void sock_write_timestamp(struct sock *sk, ktime_t kt) | |||
2353 | sk->sk_stamp = kt; | 2353 | sk->sk_stamp = kt; |
2354 | write_sequnlock(&sk->sk_stamp_seq); | 2354 | write_sequnlock(&sk->sk_stamp_seq); |
2355 | #else | 2355 | #else |
2356 | sk->sk_stamp = kt; | 2356 | WRITE_ONCE(sk->sk_stamp, kt); |
2357 | #endif | 2357 | #endif |
2358 | } | 2358 | } |
2359 | 2359 | ||