diff options
author | Eric Dumazet <edumazet@google.com> | 2023-03-17 15:55:39 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2023-03-18 12:23:34 +0000 |
commit | e9d9da91548b21e189fcd0259a0f2d26d1afc509 (patch) | |
tree | fd943e26281cfd7a7e0948d1949d6e0009c19510 /include/linux/tcp.h | |
parent | 403a40f2304d4730a780ab9d6a2b93d1e4ac39d2 (diff) | |
download | linux-e9d9da91548b21e189fcd0259a0f2d26d1afc509.tar.gz linux-e9d9da91548b21e189fcd0259a0f2d26d1afc509.tar.bz2 linux-e9d9da91548b21e189fcd0259a0f2d26d1afc509.zip |
tcp: preserve const qualifier in tcp_sk()
We can change tcp_sk() to propagate its argument const qualifier,
thanks to container_of_const().
We have two places where a const sock pointer has to be upgraded
to a write one. We have been using const qualifier for lockless
listeners to clearly identify points where writes could happen.
Add tcp_sk_rw() helper to better document these.
tcp_inbound_md5_hash(), __tcp_grow_window(), tcp_reset_check()
and tcp_rack_reo_wnd() get an additional const qualififer
for their @tp local variables.
smc_check_reset_syn_req() also needs a similar change.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux/tcp.h')
-rw-r--r-- | include/linux/tcp.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index ca7f05a130d2..b4c08ac86983 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h @@ -472,10 +472,12 @@ enum tsq_flags { TCPF_MTU_REDUCED_DEFERRED = (1UL << TCP_MTU_REDUCED_DEFERRED), }; -static inline struct tcp_sock *tcp_sk(const struct sock *sk) -{ - return (struct tcp_sock *)sk; -} +#define tcp_sk(ptr) container_of_const(ptr, struct tcp_sock, inet_conn.icsk_inet.sk) + +/* Variant of tcp_sk() upgrading a const sock to a read/write tcp socket. + * Used in context of (lockless) tcp listeners. + */ +#define tcp_sk_rw(ptr) container_of(ptr, struct tcp_sock, inet_conn.icsk_inet.sk) struct tcp_timewait_sock { struct inet_timewait_sock tw_sk; |