Re: [PATCH v2 11/25] tcp: authopt: Implement Sequence Number Extension
From: Leonard Crestez <hidden>
Date: 2021-11-02 09:51:56
Also in:
linux-crypto, linux-kselftest, lkml
On 11/1/21 10:54 PM, Eric Dumazet wrote:
On 11/1/21 9:34 AM, Leonard Crestez wrote:quoted
Add a compute_sne function which finds the value of SNE for a certain SEQ given an already known "recent" SNE/SEQ. This is implemented using the standard tcp before/after macro and will work for SEQ values that are without 2^31 of the SEQ for which we know the SNE.quoted
} +void __tcp_authopt_update_rcv_sne(struct tcp_sock *tp, struct tcp_authopt_info *info, u32 seq); +static inline void tcp_authopt_update_rcv_sne(struct tcp_sock *tp, u32 seq) +{ + struct tcp_authopt_info *info; + + if (static_branch_unlikely(&tcp_authopt_needed)) { + rcu_read_lock(); + info = rcu_dereference(tp->authopt_info); + if (info) + __tcp_authopt_update_rcv_sne(tp, info, seq); + rcu_read_unlock(); + } +} +void __tcp_authopt_update_snd_sne(struct tcp_sock *tp, struct tcp_authopt_info *info, u32 seq); +static inline void tcp_authopt_update_snd_sne(struct tcp_sock *tp, u32 seq) +{ + struct tcp_authopt_info *info; + + if (static_branch_unlikely(&tcp_authopt_needed)) { + rcu_read_lock(); + info = rcu_dereference(tp->authopt_info); + if (info) + __tcp_authopt_update_snd_sne(tp, info, seq); + rcu_read_unlock(); + } +}I would think callers of these helpers own socket lock, so no rcu_read_lock()/unlock() should be needed. Perhaps instead rcu_dereference_protected(tp->authopt_info, lockdep_sock_is_held(sk));
Yes, all the callers hold the socket lock and replacing rcu_read_lock doesn't trigger any RCU warnings. -- Regards, Leonard