On Tue, Jun 25, 2019 at 01:19:37PM -0400, Josh Hunt wrote:
Backport of dad3a9314ac95dedc007bc7dacacb396ea10e376:
You probably meant b6653b3629e5b88202be3c9abc44713973f5c4b4 here.
tcp_fragment() might be called for skbs in the write queue. Memory limits might have been exceeded because tcp_sendmsg() only checks limits at full skb (64KB) boundaries. Therefore, we need to make sure tcp_fragment() wont punish applications that might have setup very low SO_SNDBUF values. Backport notes: Initial version used tcp_queue type which is not present in older kernels, so added a new arg to tcp_fragment() to determine whether this is a retransmit or not. Fixes: 9daf226ff926 ("tcp: tcp_fragment() should apply sane memory limits") Signed-off-by: Josh Hunt <johunt@xxxxxxxxxx> Reviewed-by: Jason Baron <jbaron@xxxxxxxxxx> --- Eric/Greg - This applies on top of v4.14.130. I did not see anything come through for the older (<4.19) stable kernels yet. Without this change Christoph Paasch's packetrill script (https://lore.kernel.org/netdev/CALMXkpYVRxgeqarp4gnmX7GqYh1sWOAt6UaRFqYBOaaNFfZ5sw@xxxxxxxxxxxxxx/) will fail on 4.14 stable kernels, but passes with this change.
Eric, it would be great if you could Ack this, it's very different from your original patch. -- Thanks, Sasha