Subject: Re: Data corruption issue with splice() on 2.6.27.10

From: Jarek Poplawski <[email-masked]>
Date: Mon, 19 Jan 2009 07:32:35 +0000

On Mon, Jan 12, 2009 at 01:15:17PM +0000, Jarek Poplawski wrote:
...
> I've wondered if something like this could work as a temporary hack?
...
> @@ -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);

Just for the record: this wouldn't work yet:-( It should be probably
something like "PageCompound(compound_head(page))" test instead.

Jarek P.