mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
net: tcp: move sk_rx_dst_set call after tcp_create_openreq_child()
This commit removes the sk_rx_dst_set calls from
tcp_create_openreq_child(), because at that point the icsk_af_ops
field of ipv6_mapped TCP sockets has not been set to its proper final
value.
Instead, to make sure we get the right sk_rx_dst_set variant
appropriate for the address family of the new connection, we have
tcp_v{4,6}_syn_recv_sock() directly call the appropriate function
shortly after the call to tcp_create_openreq_child() returns.
This also moves inet6_sk_rx_dst_set() to avoid a forward declaration
with the new approach.
Signed-off-by: Neal Cardwell <[email protected]>
Reported-by: Artem Savkov <[email protected]>
Cc: Eric Dumazet <[email protected]>
Acked-by: Eric Dumazet <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
3de7a37b02
commit
fae6ef87fa
3 changed files with 14 additions and 14 deletions
|
|
@ -1462,6 +1462,7 @@ struct sock *tcp_v4_syn_recv_sock(struct sock *sk, struct sk_buff *skb,
|
|||
goto exit_nonewsk;
|
||||
|
||||
newsk->sk_gso_type = SKB_GSO_TCPV4;
|
||||
inet_sk_rx_dst_set(newsk, skb);
|
||||
|
||||
newtp = tcp_sk(newsk);
|
||||
newinet = inet_sk(newsk);
|
||||
|
|
|
|||
|
|
@ -387,8 +387,6 @@ struct sock *tcp_create_openreq_child(struct sock *sk, struct request_sock *req,
|
|||
struct tcp_sock *oldtp = tcp_sk(sk);
|
||||
struct tcp_cookie_values *oldcvp = oldtp->cookie_values;
|
||||
|
||||
newicsk->icsk_af_ops->sk_rx_dst_set(newsk, skb);
|
||||
|
||||
/* TCP Cookie Transactions require space for the cookie pair,
|
||||
* as it differs for each connection. There is no need to
|
||||
* copy any s_data_payload stored at the original socket.
|
||||
|
|
|
|||
Loading…
Reference in a new issue