Commit 2f181855 authored by Herbert Xu's avatar Herbert Xu Committed by David S. Miller

gso: Fix support for linear packets

When GRO/frag_list support was added to GSO, I made an error
which broke the support for segmenting linear GSO packets (GSO
packets are normally non-linear in the payload).

These days most of these packets are constructed by the tun
driver, which prefers to allocate linear memory if possible.
This is fixed in the latest kernel, but for 2.6.29 and earlier
it is still the norm.

Therefore this bug causes failures with GSO when used with tun
in 2.6.29.
Reported-by: default avatarJames Huang <jamesclhuang@gmail.com>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4b21cd4e
...@@ -2579,7 +2579,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features) ...@@ -2579,7 +2579,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, int features)
skb_network_header_len(skb)); skb_network_header_len(skb));
skb_copy_from_linear_data(skb, nskb->data, doffset); skb_copy_from_linear_data(skb, nskb->data, doffset);
if (pos >= offset + len) if (fskb != skb_shinfo(skb)->frag_list)
continue; continue;
if (!sg) { if (!sg) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment