|
@@ -31,9 +31,11 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
struct net_bridge_mdb_entry *mdst;
|
|
|
struct br_cpu_netstats *brstats = this_cpu_ptr(br->stats);
|
|
|
|
|
|
+ rcu_read_lock();
|
|
|
#ifdef CONFIG_BRIDGE_NETFILTER
|
|
|
if (skb->nf_bridge && (skb->nf_bridge->mask & BRNF_BRIDGED_DNAT)) {
|
|
|
br_nf_pre_routing_finish_bridge_slow(skb);
|
|
|
+ rcu_read_unlock();
|
|
|
return NETDEV_TX_OK;
|
|
|
}
|
|
|
#endif
|
|
@@ -48,7 +50,6 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
|
|
|
skb_reset_mac_header(skb);
|
|
|
skb_pull(skb, ETH_HLEN);
|
|
|
|
|
|
- rcu_read_lock();
|
|
|
if (is_broadcast_ether_addr(dest))
|
|
|
br_flood_deliver(br, skb);
|
|
|
else if (is_multicast_ether_addr(dest)) {
|