diff options
Diffstat (limited to 'net/bridge/br_device.c')
-rw-r--r-- | net/bridge/br_device.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index f0f3447e8aa4..861ae2a165f4 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c | |||
@@ -34,11 +34,11 @@ static struct lock_class_key bridge_netdev_addr_lock_key; | |||
34 | netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) | 34 | netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) |
35 | { | 35 | { |
36 | struct net_bridge *br = netdev_priv(dev); | 36 | struct net_bridge *br = netdev_priv(dev); |
37 | const unsigned char *dest = skb->data; | ||
38 | struct net_bridge_fdb_entry *dst; | 37 | struct net_bridge_fdb_entry *dst; |
39 | struct net_bridge_mdb_entry *mdst; | 38 | struct net_bridge_mdb_entry *mdst; |
40 | struct pcpu_sw_netstats *brstats = this_cpu_ptr(br->stats); | 39 | struct pcpu_sw_netstats *brstats = this_cpu_ptr(br->stats); |
41 | const struct nf_br_ops *nf_ops; | 40 | const struct nf_br_ops *nf_ops; |
41 | const unsigned char *dest; | ||
42 | u16 vid = 0; | 42 | u16 vid = 0; |
43 | 43 | ||
44 | rcu_read_lock(); | 44 | rcu_read_lock(); |
@@ -61,6 +61,7 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) | |||
61 | if (!br_allowed_ingress(br, br_vlan_group_rcu(br), skb, &vid)) | 61 | if (!br_allowed_ingress(br, br_vlan_group_rcu(br), skb, &vid)) |
62 | goto out; | 62 | goto out; |
63 | 63 | ||
64 | dest = eth_hdr(skb)->h_dest; | ||
64 | if (is_broadcast_ether_addr(dest)) { | 65 | if (is_broadcast_ether_addr(dest)) { |
65 | br_flood(br, skb, BR_PKT_BROADCAST, false, true); | 66 | br_flood(br, skb, BR_PKT_BROADCAST, false, true); |
66 | } else if (is_multicast_ether_addr(dest)) { | 67 | } else if (is_multicast_ether_addr(dest)) { |