diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index cfd7edda0a8eb6e8dd908a1bc5c309225c4ce495..2ff6f45a76f46dce6d9ed1cae24afa7852643766 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -860,7 +860,7 @@ static ssize_t do_tcp_sendpages(struct sock *sk, struct page **pages, int poffse
 	}
 
 out:
-	if (copied)
+	if (copied && !(flags & MSG_MORE))
 		tcp_push(sk, flags, mss_now, tp->nonagle);
 	return copied;