aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge/br_input.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/bridge/br_input.c')
-rw-r--r--net/bridge/br_input.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
index 013f2290bfa5..7637f58c1226 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -131,11 +131,11 @@ static void br_do_proxy_arp(struct sk_buff *skb, struct net_bridge *br,
131int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb) 131int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
132{ 132{
133 struct net_bridge_port *p = br_port_get_rcu(skb->dev); 133 struct net_bridge_port *p = br_port_get_rcu(skb->dev);
134 const unsigned char *dest = eth_hdr(skb)->h_dest;
135 enum br_pkt_type pkt_type = BR_PKT_UNICAST; 134 enum br_pkt_type pkt_type = BR_PKT_UNICAST;
136 struct net_bridge_fdb_entry *dst = NULL; 135 struct net_bridge_fdb_entry *dst = NULL;
137 struct net_bridge_mdb_entry *mdst; 136 struct net_bridge_mdb_entry *mdst;
138 bool local_rcv, mcast_hit = false; 137 bool local_rcv, mcast_hit = false;
138 const unsigned char *dest;
139 struct net_bridge *br; 139 struct net_bridge *br;
140 u16 vid = 0; 140 u16 vid = 0;
141 141
@@ -153,6 +153,7 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb
153 br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, false); 153 br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, false);
154 154
155 local_rcv = !!(br->dev->flags & IFF_PROMISC); 155 local_rcv = !!(br->dev->flags & IFF_PROMISC);
156 dest = eth_hdr(skb)->h_dest;
156 if (is_multicast_ether_addr(dest)) { 157 if (is_multicast_ether_addr(dest)) {
157 /* by definition the broadcast is also a multicast address */ 158 /* by definition the broadcast is also a multicast address */
158 if (is_broadcast_ether_addr(dest)) { 159 if (is_broadcast_ether_addr(dest)) {