Message ID | 1459523080-29329-3-git-send-email-soheil.kdev@gmail.com |
---|---|
State | Changes Requested, archived |
Delegated to: | David Miller |
Headers | show |
On Fri, 2016-04-01 at 11:04 -0400, Soheil Hassas Yeganeh wrote: > From: Soheil Hassas Yeganeh <soheil@google.com> > > SOF_TIMESTAMPING_OPT_ID is set to get data-independent IDs > to associate timestamps with send calls. For TCP connections, > tp->snd_una is used as the starting point to calculate > relative IDs. > > This socket option will fail if set before the handshake on a > passive TCP fast open connection with data in SYN or SYN/ACK, > since setsockopt requires the connection to be in the > ESTABLISHED state. > > To address these, instead of limiting the option to the > ESTABLISHED state, accept the SOF_TIMESTAMPING_OPT_ID option as > long as the connection is not in LISTEN or CLOSE states. Acked-by: Eric Dumazet <edumazet@google.com>
diff --git a/net/core/sock.c b/net/core/sock.c index 66976f8..0a64fe2 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -832,7 +832,8 @@ set_rcvbuf: !(sk->sk_tsflags & SOF_TIMESTAMPING_OPT_ID)) { if (sk->sk_protocol == IPPROTO_TCP && sk->sk_type == SOCK_STREAM) { - if (sk->sk_state != TCP_ESTABLISHED) { + if ((1 << sk->sk_state) & + (TCPF_CLOSE | TCPF_LISTEN)) { ret = -EINVAL; break; }