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.
--
Ben Hutchings, Staff Engineer, Solarflare
Not speaking for my employer; that's the marketing department's job.
They asked us to note that Solarflare product names are trademarked.