Messages in this thread | | | Subject | Re: [PATCH v2 11/25] tcp: authopt: Implement Sequence Number Extension | From | Leonard Crestez <> | Date | Tue, 2 Nov 2021 11:50:46 +0200 |
| |
On 11/1/21 10:54 PM, Eric Dumazet wrote: > On 11/1/21 9:34 AM, Leonard Crestez wrote: >> 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. > >> } >> +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
| |