net: Ensure partial checksum offset is inside the skb head
authorHerbert Xu <herbert@gondor.apana.org.au>
Thu, 4 Jun 2009 01:22:01 +0000 (01:22 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 8 Jun 2009 07:20:19 +0000 (00:20 -0700)
commit5ff8dda3035d95df5bf6979136eb82b0e301726b
tree81e78b26cc50de421683cd896ed15aae4d6f107e
parent4909122fb8350e70c347f1201256908a92058044
net: Ensure partial checksum offset is inside the skb head

On Thu, Jun 04, 2009 at 09:06:00PM +1000, Herbert Xu wrote:
>
> tun: Optimise handling of bogus gso->hdr_len
>
> As all current versions of virtio_net generate a value for the
> header length that's too small, we should optimise this so that
> we don't copy it twice.  This can be done by ensuring that it is
> at least as large as the place where we'll write the checksum.
>
> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>

With this applied we can strengthen the partial checksum check:

In skb_partial_csum_set we check to see if the checksum offset
is within the packet.  However, we really should check that it
is within the skb head as that's the only bit we can modify
without copying.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Rusty Russell <rusty@rustcorp.com.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/skbuff.c