|
@@ -603,6 +603,10 @@ int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
|
|
|
frag_id = ipv6_select_ident(net, &ipv6_hdr(skb)->daddr,
|
|
|
&ipv6_hdr(skb)->saddr);
|
|
|
|
|
|
+ if (skb->ip_summed == CHECKSUM_PARTIAL &&
|
|
|
+ (err = skb_checksum_help(skb)))
|
|
|
+ goto fail;
|
|
|
+
|
|
|
hroom = LL_RESERVED_SPACE(rt->dst.dev);
|
|
|
if (skb_has_frag_list(skb)) {
|
|
|
int first_len = skb_pagelen(skb);
|
|
@@ -731,10 +735,6 @@ slow_path_clean:
|
|
|
}
|
|
|
|
|
|
slow_path:
|
|
|
- if ((skb->ip_summed == CHECKSUM_PARTIAL) &&
|
|
|
- skb_checksum_help(skb))
|
|
|
- goto fail;
|
|
|
-
|
|
|
left = skb->len - hlen; /* Space per frame */
|
|
|
ptr = hlen; /* Where to start from */
|
|
|
|