Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
The netfilter conflicts were rather simple overlapping changes. However, the cls_tcindex.c stuff was a bit more complex. On the 'net' side, Cong is fixing several races and memory leaks. Whilst on the 'net-next' side we have Vlad adding the rtnl-ness support. What I've decided to do, in order to resolve this, is revert the conversion over to using a workqueue that Cong did, bringing us back to pure RCU. I did it this way because I believe that either Cong's races don't apply with have Vlad did things, or Cong will have to implement the race fix slightly differently. Signed-off-by: David S. Miller <davem@davemloft.net>
这个提交包含在:
@@ -2293,7 +2293,7 @@ static void vxlan_encap_bypass(struct sk_buff *skb, struct vxlan_dev *src_vxlan,
|
||||
struct pcpu_sw_netstats *tx_stats, *rx_stats;
|
||||
union vxlan_addr loopback;
|
||||
union vxlan_addr *remote_ip = &dst_vxlan->default_dst.remote_ip;
|
||||
struct net_device *dev = skb->dev;
|
||||
struct net_device *dev;
|
||||
int len = skb->len;
|
||||
|
||||
tx_stats = this_cpu_ptr(src_vxlan->dev->tstats);
|
||||
@@ -2313,9 +2313,15 @@ static void vxlan_encap_bypass(struct sk_buff *skb, struct vxlan_dev *src_vxlan,
|
||||
#endif
|
||||
}
|
||||
|
||||
rcu_read_lock();
|
||||
dev = skb->dev;
|
||||
if (unlikely(!(dev->flags & IFF_UP))) {
|
||||
kfree_skb(skb);
|
||||
goto drop;
|
||||
}
|
||||
|
||||
if (dst_vxlan->cfg.flags & VXLAN_F_LEARN)
|
||||
vxlan_snoop(skb->dev, &loopback, eth_hdr(skb)->h_source, 0,
|
||||
vni);
|
||||
vxlan_snoop(dev, &loopback, eth_hdr(skb)->h_source, 0, vni);
|
||||
|
||||
u64_stats_update_begin(&tx_stats->syncp);
|
||||
tx_stats->tx_packets++;
|
||||
@@ -2328,8 +2334,10 @@ static void vxlan_encap_bypass(struct sk_buff *skb, struct vxlan_dev *src_vxlan,
|
||||
rx_stats->rx_bytes += len;
|
||||
u64_stats_update_end(&rx_stats->syncp);
|
||||
} else {
|
||||
drop:
|
||||
dev->stats.rx_dropped++;
|
||||
}
|
||||
rcu_read_unlock();
|
||||
}
|
||||
|
||||
static int encap_bypass_if_local(struct sk_buff *skb, struct net_device *dev,
|
||||
|
在新工单中引用
屏蔽一个用户