diff options
author | 2022-11-15 09:11:01 +0000 | |
---|---|---|
committer | 2022-11-16 12:42:01 +0000 | |
commit | 4ebf802cf1c6a87fd14e7936728c99e18d7ba794 (patch) | |
tree | 0c745a13b644805bdb6f08f99251d486f1800911 | |
parent | net: adopt try_cmpxchg() in napi_{enable|disable}() (diff) | |
download | wireguard-linux-4ebf802cf1c6a87fd14e7936728c99e18d7ba794.tar.xz wireguard-linux-4ebf802cf1c6a87fd14e7936728c99e18d7ba794.zip |
net: __sock_gen_cookie() cleanup
Adopt atomic64_try_cmpxchg() and remove the loop,
to make the intent more obvious.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/core/sock_diag.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/net/core/sock_diag.c b/net/core/sock_diag.c index f7cf74cdd3db..b11593cae5a0 100644 --- a/net/core/sock_diag.c +++ b/net/core/sock_diag.c @@ -25,14 +25,14 @@ DEFINE_COOKIE(sock_cookie); u64 __sock_gen_cookie(struct sock *sk) { - while (1) { - u64 res = atomic64_read(&sk->sk_cookie); + u64 res = atomic64_read(&sk->sk_cookie); - if (res) - return res; - res = gen_cookie_next(&sock_cookie); - atomic64_cmpxchg(&sk->sk_cookie, 0, res); + if (!res) { + u64 new = gen_cookie_next(&sock_cookie); + + atomic64_try_cmpxchg(&sk->sk_cookie, &res, new); } + return res; } int sock_diag_check_cookie(struct sock *sk, const __u32 *cookie) |