From: Jarek Poplawski <jarkao2@gmail•com>
To: Herbert Xu <herbert@gondor•apana.org.au>
Cc: "David S. Miller" <davem@davemloft•net>,
Jens Axboe <jens.axboe@oracle•com>, Willy Tarreau <w@1wt•eu>,
Changli Gao <xiaosuo@gmail•com>,
Evgeniy Polyakov <zbr@ioremap•net>,
linux-kernel@vger•kernel.org, netdev@vger•kernel.org
Subject: Re: Data corruption issue with splice() on 2.6.27.10
Date: Mon, 12 Jan 2009 13:15:17 +0000 [thread overview]
Message-ID: <20090112131517.GD5901@ff.dom.local> (raw)
In-Reply-To: <20090112120257.GA5697@gondor.apana.org.au>
On Mon, Jan 12, 2009 at 11:02:57PM +1100, Herbert Xu wrote:
> On Wed, Jan 07, 2009 at 11:52:17PM +1100, Herbert Xu wrote:
> > On Wed, Jan 07, 2009 at 12:49:46PM +0000, Jarek Poplawski wrote:
> > >
> > > Hmm... in any case: take 3
> >
> > Yes this should fix the corruption but it kind of defeats the
> > purpose of splice by copying the data.
>
> However, as we don't have a better fix yet, we probably should
> take Jarek's patch for now since data corruption is bad.
>
I've wondered if something like this could work as a temporary hack?
!!! not compiled/tested !!!
---
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index ce572f9..99b0876 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -264,6 +264,7 @@
#include <linux/cache.h>
#include <linux/err.h>
#include <linux/crypto.h>
+#include <linux/page-flags.h>
#include <net/icmp.h>
#include <net/tcp.h>
@@ -776,7 +777,8 @@ ssize_t tcp_sendpage(struct socket *sock, struct page *page, int offset,
struct sock *sk = sock->sk;
if (!(sk->sk_route_caps & NETIF_F_SG) ||
- !(sk->sk_route_caps & NETIF_F_ALL_CSUM))
+ !(sk->sk_route_caps & NETIF_F_ALL_CSUM) ||
+ PageSlab(page))
return sock_no_sendpage(sock, page, offset, size, flags);
lock_sock(sk);
next prev parent reply other threads:[~2009-01-12 13:15 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-24 15:28 Data corruption issue with splice() on 2.6.27.10 Willy Tarreau
2009-01-06 8:54 ` Jarek Poplawski
2009-01-06 9:41 ` Willy Tarreau
2009-01-06 10:01 ` Jarek Poplawski
2009-01-06 10:04 ` Willy Tarreau
2009-01-06 15:57 ` Willy Tarreau
2009-01-07 9:39 ` Jarek Poplawski
2009-01-07 12:22 ` Willy Tarreau
2009-01-07 12:24 ` Herbert Xu
2009-01-07 12:38 ` Jarek Poplawski
2009-01-07 12:31 ` Jarek Poplawski
2009-01-07 12:35 ` Jens Axboe
2009-01-07 12:40 ` Evgeniy Polyakov
2009-01-07 12:52 ` Willy Tarreau
2009-01-07 12:53 ` Herbert Xu
2009-01-07 12:57 ` Evgeniy Polyakov
2009-01-07 13:08 ` Willy Tarreau
2009-01-07 12:49 ` Jarek Poplawski
2009-01-07 12:52 ` Herbert Xu
2009-01-07 13:00 ` Willy Tarreau
2009-01-07 13:01 ` Herbert Xu
2009-01-07 13:02 ` Jarek Poplawski
2009-01-12 12:02 ` Herbert Xu
2009-01-12 12:45 ` Evgeniy Polyakov
2009-01-12 12:56 ` Herbert Xu
2009-01-12 12:59 ` Evgeniy Polyakov
2009-01-12 21:11 ` Herbert Xu
2009-01-12 13:15 ` Jarek Poplawski [this message]
2009-01-12 21:12 ` Herbert Xu
2009-01-19 7:32 ` Jarek Poplawski
2009-01-07 12:39 ` Willy Tarreau
2009-01-07 12:56 ` Jarek Poplawski
2009-01-07 12:44 ` Herbert Xu
2009-01-06 17:42 ` Ben Mansell
2009-01-06 18:15 ` Willy Tarreau
2009-01-08 7:16 ` Jarek Poplawski
2009-01-08 8:05 ` Willy Tarreau
2009-01-08 14:53 ` Ingo Molnar
2009-01-08 15:16 ` Ben Mansell
2009-01-08 17:14 ` Willy Tarreau
2009-01-06 18:32 ` Evgeniy Polyakov
2009-01-06 18:37 ` Jens Axboe
2009-01-06 18:55 ` Willy Tarreau
2009-01-07 4:42 ` Herbert Xu
2009-01-07 6:38 ` Willy Tarreau
2009-01-07 9:52 ` Herbert Xu
2009-01-07 9:54 ` Willy Tarreau
2009-01-07 11:52 ` Herbert Xu
2009-01-07 8:17 ` Jens Axboe
2009-01-07 11:29 ` Evgeniy Polyakov
2009-01-07 11:50 ` Herbert Xu
2009-01-07 11:56 ` Evgeniy Polyakov
2009-01-07 11:59 ` Herbert Xu
2009-01-07 12:15 ` Evgeniy Polyakov
2009-01-07 12:22 ` Herbert Xu
2009-01-07 12:27 ` Herbert Xu
2009-01-07 12:30 ` Herbert Xu
2009-01-07 12:37 ` Evgeniy Polyakov
2009-01-07 12:42 ` Herbert Xu
2009-01-07 12:46 ` Evgeniy Polyakov
2009-01-07 12:55 ` Willy Tarreau
2009-01-07 12:57 ` Herbert Xu
2009-01-07 13:02 ` Evgeniy Polyakov
2009-01-07 13:10 ` Jarek Poplawski
2009-01-07 13:15 ` Willy Tarreau
2009-01-07 13:22 ` Jarek Poplawski
2009-01-07 14:01 ` Jarek Poplawski
2009-01-06 18:50 ` Willy Tarreau
2009-01-19 8:39 ` Lennert Buytenhek
2009-01-19 9:53 ` Willy Tarreau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20090112131517.GD5901@ff.dom.local \
--to=jarkao2@gmail$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=herbert@gondor$(echo .)apana.org.au \
--cc=jens.axboe@oracle$(echo .)com \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=netdev@vger$(echo .)kernel.org \
--cc=w@1wt$(echo .)eu \
--cc=xiaosuo@gmail$(echo .)com \
--cc=zbr@ioremap$(echo .)net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox