diff options
| -rw-r--r-- | net/ipv4/tcp_minisocks.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c index 75632a925824..9b02af2139d3 100644 --- a/net/ipv4/tcp_minisocks.c +++ b/net/ipv4/tcp_minisocks.c | |||
| @@ -455,7 +455,7 @@ struct sock *tcp_create_openreq_child(const struct sock *sk, | |||
| 455 | 455 | ||
| 456 | newtp->rcv_wup = newtp->copied_seq = | 456 | newtp->rcv_wup = newtp->copied_seq = |
| 457 | newtp->rcv_nxt = treq->rcv_isn + 1; | 457 | newtp->rcv_nxt = treq->rcv_isn + 1; |
| 458 | newtp->segs_in = 0; | 458 | newtp->segs_in = 1; |
| 459 | 459 | ||
| 460 | newtp->snd_sml = newtp->snd_una = | 460 | newtp->snd_sml = newtp->snd_una = |
| 461 | newtp->snd_nxt = newtp->snd_up = treq->snt_isn + 1; | 461 | newtp->snd_nxt = newtp->snd_up = treq->snt_isn + 1; |
| @@ -815,6 +815,7 @@ int tcp_child_process(struct sock *parent, struct sock *child, | |||
| 815 | int ret = 0; | 815 | int ret = 0; |
| 816 | int state = child->sk_state; | 816 | int state = child->sk_state; |
| 817 | 817 | ||
| 818 | tcp_sk(child)->segs_in += max_t(u16, 1, skb_shinfo(skb)->gso_segs); | ||
| 818 | if (!sock_owned_by_user(child)) { | 819 | if (!sock_owned_by_user(child)) { |
| 819 | ret = tcp_rcv_state_process(child, skb); | 820 | ret = tcp_rcv_state_process(child, skb); |
| 820 | /* Wakeup parent, send SIGIO */ | 821 | /* Wakeup parent, send SIGIO */ |
