diff options
author | Dmitry Safonov <dima@arista.com> | 2023-12-04 22:00:41 +0300 |
---|---|---|
committer | Paolo Abeni <pabeni@redhat.com> | 2023-12-06 14:36:55 +0300 |
commit | da7dfaa6d6f731c30eca6ffa808b83634d43e26f (patch) | |
tree | 6664d5827e0611238fc46e4225a8b435754d72a7 /include/net | |
parent | 714589c2742209cc228991b115e48548fb8d89cf (diff) | |
download | linux-da7dfaa6d6f731c30eca6ffa808b83634d43e26f.tar.xz |
net/tcp: Consistently align TCP-AO option in the header
Currently functions that pre-calculate TCP header options length use
unaligned TCP-AO header + MAC-length for skb reservation.
And the functions that actually write TCP-AO options into skb do align
the header. Nothing good can come out of this for ((maclen % 4) != 0).
Provide tcp_ao_len_aligned() helper and use it everywhere for TCP
header options space calculations.
Fixes: 1e03d32bea8e ("net/tcp: Add TCP-AO sign to outgoing packets")
Signed-off-by: Dmitry Safonov <dima@arista.com>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/tcp_ao.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/net/tcp_ao.h b/include/net/tcp_ao.h index b56be10838f0..647781080613 100644 --- a/include/net/tcp_ao.h +++ b/include/net/tcp_ao.h @@ -62,11 +62,17 @@ static inline int tcp_ao_maclen(const struct tcp_ao_key *key) return key->maclen; } +/* Use tcp_ao_len_aligned() for TCP header calculations */ static inline int tcp_ao_len(const struct tcp_ao_key *key) { return tcp_ao_maclen(key) + sizeof(struct tcp_ao_hdr); } +static inline int tcp_ao_len_aligned(const struct tcp_ao_key *key) +{ + return round_up(tcp_ao_len(key), 4); +} + static inline unsigned int tcp_ao_digest_size(struct tcp_ao_key *key) { return key->digest_size; |