diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 313960e4cfdcc707c1d2e406ac59f1c4b98c9574..68342d431896779906c9cc2a0415db20b5ff0184 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -2566,7 +2566,7 @@ found:
 
 	mss = skb_shinfo(p)->gso_size;
 
-	flush |= (len > mss) | !len;
+	flush |= (len - 1) >= mss;
 	flush |= (ntohl(th2->seq) + skb_gro_len(p)) ^ ntohl(th->seq);
 
 	if (flush || skb_gro_receive(head, skb)) {