diff options
author | Eric Dumazet <edumazet@google.com> | 2019-09-24 17:01:16 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-09-27 12:05:02 +0200 |
commit | f6c0f5d209fa80eb808e08aa4206f6e264041ef6 (patch) | |
tree | a3c9c3a820ff3b8cc28671d498fad022142f74ff /net/ipv4/tcp_minisocks.c | |
parent | ipv6: tcp: provide sk->sk_priority to ctl packets (diff) | |
download | linux-f6c0f5d209fa80eb808e08aa4206f6e264041ef6.tar.xz linux-f6c0f5d209fa80eb808e08aa4206f6e264041ef6.zip |
tcp: honor SO_PRIORITY in TIME_WAIT state
ctl packets sent on behalf of TIME_WAIT sockets currently
have a zero skb->priority, which can cause various problems.
In this patch we :
- add a tw_priority field in struct inet_timewait_sock.
- populate it from sk->sk_priority when a TIME_WAIT is created.
- For IPv4, change ip_send_unicast_reply() and its two
callers to propagate tw_priority correctly.
ip_send_unicast_reply() no longer changes sk->sk_priority.
- For IPv6, make sure TIME_WAIT sockets pass their tw_priority
field to tcp_v6_send_response() and tcp_v6_send_ack().
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_minisocks.c')
-rw-r--r-- | net/ipv4/tcp_minisocks.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c index 8bcaf2586b68..bb140a5db8c0 100644 --- a/net/ipv4/tcp_minisocks.c +++ b/net/ipv4/tcp_minisocks.c @@ -266,6 +266,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo) tw->tw_transparent = inet->transparent; tw->tw_mark = sk->sk_mark; + tw->tw_priority = sk->sk_priority; tw->tw_rcv_wscale = tp->rx_opt.rcv_wscale; tcptw->tw_rcv_nxt = tp->rcv_nxt; tcptw->tw_snd_nxt = tp->snd_nxt; |