Messages in this thread | | | Subject | Re: [PATCH v2 11/25] tcp: authopt: Implement Sequence Number Extension | From | Eric Dumazet <> | Date | Mon, 1 Nov 2021 13:54:46 -0700 |
| |
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));
| |