On Tue, Apr 24, 2018 at 12:09 AM, Eric Dumazet <eric.duma...@gmail.com> wrote: > > > On 04/23/2018 08:58 AM, David Miller wrote: >> From: Yafang Shao <laoar.s...@gmail.com> >> Date: Sun, 22 Apr 2018 21:50:04 +0800 >> >>> With sk_cookie we can identify a socket, that is very helpful for >>> traceing and statistic, i.e. tcp tracepiont and ebpf. >>> So we'd better init it by default for inet socket. >>> When using it, we just need call atomic64_read(&sk->sk_cookie). >>> >>> Signed-off-by: Yafang Shao <laoar.s...@gmail.com> >> >> Applied, thank you. >> > > This is adding yet another atomic_inc on a global cache line. >
That's a trade-off. > Most applications do not need the cookie being ever set. > > The existing mechanism was fine. Set it on demand. There are some drawback in the existing mechanism. - we have to set the net->cookie_gen and then sk->sk_cookie when we want to get the sk_cookie, that's a little expensive as well. After that change, sock_gen_cookie() could be replaced by atomic64_read(&sk->sk_cookie) in most places. - If the application want to get the sk_cookie, it must set it first. What if the application don't have the permision to write? Furthermore, maybe it is a security concern ? Thanks Yafang