浏览代码

ipvs: call skb_sender_cpu_clear

Reset XPS's sender_cpu on forwarding.

Signed-off-by: Julian Anastasov <ja@ssi.bg>
Fixes: 2bd82484bb4c ("xps: fix xps for stacked devices")
Signed-off-by: Simon Horman <horms@verge.net.au>
Julian Anastasov 10 年之前
父节点
当前提交
e3895c0334
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      net/netfilter/ipvs/ip_vs_xmit.c

+ 6 - 0
net/netfilter/ipvs/ip_vs_xmit.c

@@ -529,6 +529,8 @@ static inline int ip_vs_tunnel_xmit_prepare(struct sk_buff *skb,
 	if (ret == NF_ACCEPT) {
 	if (ret == NF_ACCEPT) {
 		nf_reset(skb);
 		nf_reset(skb);
 		skb_forward_csum(skb);
 		skb_forward_csum(skb);
+		if (!skb->sk)
+			skb_sender_cpu_clear(skb);
 	}
 	}
 	return ret;
 	return ret;
 }
 }
@@ -569,6 +571,8 @@ static inline int ip_vs_nat_send_or_cont(int pf, struct sk_buff *skb,
 
 
 	if (!local) {
 	if (!local) {
 		skb_forward_csum(skb);
 		skb_forward_csum(skb);
+		if (!skb->sk)
+			skb_sender_cpu_clear(skb);
 		NF_HOOK(pf, NF_INET_LOCAL_OUT, NULL, skb,
 		NF_HOOK(pf, NF_INET_LOCAL_OUT, NULL, skb,
 			NULL, skb_dst(skb)->dev, dst_output_sk);
 			NULL, skb_dst(skb)->dev, dst_output_sk);
 	} else
 	} else
@@ -589,6 +593,8 @@ static inline int ip_vs_send_or_cont(int pf, struct sk_buff *skb,
 	if (!local) {
 	if (!local) {
 		ip_vs_drop_early_demux_sk(skb);
 		ip_vs_drop_early_demux_sk(skb);
 		skb_forward_csum(skb);
 		skb_forward_csum(skb);
+		if (!skb->sk)
+			skb_sender_cpu_clear(skb);
 		NF_HOOK(pf, NF_INET_LOCAL_OUT, NULL, skb,
 		NF_HOOK(pf, NF_INET_LOCAL_OUT, NULL, skb,
 			NULL, skb_dst(skb)->dev, dst_output_sk);
 			NULL, skb_dst(skb)->dev, dst_output_sk);
 	} else
 	} else