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>
This commit is contained in:
Eric Dumazet 2022-11-15 09:11:01 +00:00 committed by David S. Miller
parent 4ffa1d1c68
commit 4ebf802cf1

View File

@ -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)