summaryrefslogtreecommitdiffstats
path: root/tools/scripts
diff options
context:
space:
mode:
authorDoron Roberts-Kedes <doronrk@fb.com>2018-06-26 18:33:33 -0700
committerDavid S. Miller <davem@davemloft.net>2018-06-28 21:37:26 +0900
commit977c7114ebda2e746a114840d3a875e0cdb826fb (patch)
tree68e42d70c25e7ee758a2b5bf7d4231fa4aa7fc8d /tools/scripts
parent04c6faa17558b1c044524e24d86adf1400f2017f (diff)
downloadlinux-977c7114ebda2e746a114840d3a875e0cdb826fb.tar.bz2
strparser: Remove early eaten to fix full tcp receive buffer stall
On receving an incomplete message, the existing code stores the remaining length of the cloned skb in the early_eaten field instead of incrementing the value returned by __strp_recv. This defers invocation of sock_rfree for the current skb until the next invocation of __strp_recv, which returns early_eaten if early_eaten is non-zero. This behavior causes a stall when the current message occupies the very tail end of a massive skb, and strp_peek/need_bytes indicates that the remainder of the current message has yet to arrive on the socket. The TCP receive buffer is totally full, causing the TCP window to go to zero, so the remainder of the message will never arrive. Incrementing the value returned by __strp_recv by the amount otherwise stored in early_eaten prevents stalls of this nature. Signed-off-by: Doron Roberts-Kedes <doronrk@fb.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools/scripts')
0 files changed, 0 insertions, 0 deletions