Thread (8 messages) flat view 8 messages, 5 authors, 2012-01-14

Re: skb_checksum_help() vs GSO

From: Stephen Hemminger <hidden>
Date: 2012-01-12 22:10:17
Also in: netfilter-devel

On Thu, 12 Jan 2012 20:42:10 +0000
Ben Hutchings [off-list ref] wrote:
skb_checksum_help() does:

	if (unlikely(skb_shinfo(skb)->gso_size)) {
		/* Let GSO fix up the checksum. */
		goto out_set_summed;
	}
...
out_set_summed:
	skb->ip_summed = CHECKSUM_NONE;
out:
	return ret;

but skb_gso_segment() requires that skb->ip_summed == CHECKSUM_PARTIAL
and WARNs if not.  I don't think there's any case where it's valid to
call both.  Shouldn't skb_checksum_help() also WARN and return an error
code instead of muddling on?

Inspecting the callers of skb_checksum_help(), it looks like sch_netem's
'corrupt' option and xt_CHECKSUM might trigger this case.

Ben.
Netem needs to check for GSO manually segment before calling skb_checksum_help.
I'll sort it out.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help