diff options
author | Eric Dumazet <edumazet@google.com> | 2012-09-17 14:51:39 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-09-18 22:26:27 +0200 |
commit | 1d57f19539c074105791da6384a8ad674bba8037 (patch) | |
tree | c23d0bb80809e6e01d01e7aa5642597cc8295bbe /net | |
parent | net: fix memory leak on oom with zerocopy (diff) | |
download | linux-1d57f19539c074105791da6384a8ad674bba8037.tar.xz linux-1d57f19539c074105791da6384a8ad674bba8037.zip |
tcp: fix regression in urgent data handling
Stephan Springl found that commit 1402d366019fed "tcp: introduce
tcp_try_coalesce" introduced a regression for rlogin
It turns out problem comes from TCP urgent data handling and
a change in behavior in input path.
rlogin sends two one-byte packets with URG ptr set, and when next data
frame is coalesced, we lack sk_data_ready() calls to wakeup consumer.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Reported-by: Stephan Springl <springl-k@lar.bfw.de>
Cc: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/tcp_input.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 6e38c6c23caa..d377f4854cb8 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -4661,7 +4661,7 @@ queue_and_out: if (eaten > 0) kfree_skb_partial(skb, fragstolen); - else if (!sock_flag(sk, SOCK_DEAD)) + if (!sock_flag(sk, SOCK_DEAD)) sk->sk_data_ready(sk, 0); return; } @@ -5556,8 +5556,7 @@ no_ack: #endif if (eaten) kfree_skb_partial(skb, fragstolen); - else - sk->sk_data_ready(sk, 0); + sk->sk_data_ready(sk, 0); return 0; } } |