diff options
| author | David S. Miller <davem@davemloft.net> | 2023-03-18 12:23:48 +0000 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2023-03-18 12:23:48 +0000 |
| commit | df28e8690e7126fa5c99e8863c27574204589f31 (patch) | |
| tree | fd943e26281cfd7a7e0948d1949d6e0009c19510 /include/linux/tcp.h | |
| parent | 39a86d059a78bf29b66dd8bbeab04af1d55c02ba (diff) | |
| parent | e9d9da91548b21e189fcd0259a0f2d26d1afc509 (diff) | |
Merge branch 'net-better-const'
Eric Dumazet says:
====================
net: better const qualifier awareness
This is a follow-up of d27d367d3b78 ("inet: better const qualifier awareness")
Adopting container_of_const() to perform (struct sock *)->(protocol sock *)
operation is allowing us to propagate const qualifier and thus detect
misuses at compile time.
Most conversions are trivial, because most protocols did not adopt yet
const sk pointers where it could make sense.
Only mptcp and tcp patches (end of this series) are requiring small
adjustments.
====================
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; |
