Re: [PATCH net-next] net: init sk_cookie for inet socket

From: Yafang Shao
Date: Tue Apr 24 2018 - 00:40:15 EST

On Tue, Apr 24, 2018 at 12:09 AM, Eric Dumazet <eric.dumazet@xxxxxxxxx> wrote:
> On 04/23/2018 08:58 AM, David Miller wrote:
>> From: Yafang Shao <laoar.shao@xxxxxxxxx>
>> 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.shao@xxxxxxxxx>
>> 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 ?