@@ -514,7 +514,7 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
514
514
int hooknum , nh_off , err = NF_ACCEPT ;
515
515
516
516
nh_off = skb_network_offset (skb );
517
- skb_pull (skb , nh_off );
517
+ skb_pull_rcsum (skb , nh_off );
518
518
519
519
/* See HOOK2MANIP(). */
520
520
if (maniptype == NF_NAT_MANIP_SRC )
@@ -579,6 +579,7 @@ static int ovs_ct_nat_execute(struct sk_buff *skb, struct nf_conn *ct,
579
579
err = nf_nat_packet (ct , ctinfo , hooknum , skb );
580
580
push :
581
581
skb_push (skb , nh_off );
582
+ skb_postpush_rcsum (skb , skb -> data , nh_off );
582
583
583
584
return err ;
584
585
}
@@ -886,7 +887,7 @@ int ovs_ct_execute(struct net *net, struct sk_buff *skb,
886
887
887
888
/* The conntrack module expects to be working at L3. */
888
889
nh_ofs = skb_network_offset (skb );
889
- skb_pull (skb , nh_ofs );
890
+ skb_pull_rcsum (skb , nh_ofs );
890
891
891
892
if (key -> ip .frag != OVS_FRAG_TYPE_NONE ) {
892
893
err = handle_fragments (net , key , info -> zone .id , skb );
@@ -900,6 +901,7 @@ int ovs_ct_execute(struct net *net, struct sk_buff *skb,
900
901
err = ovs_ct_lookup (net , key , info , skb );
901
902
902
903
skb_push (skb , nh_ofs );
904
+ skb_postpush_rcsum (skb , skb -> data , nh_ofs );
903
905
if (err )
904
906
kfree_skb (skb );
905
907
return err ;
0 commit comments