Merge tag 'soc2-for-3.16' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
[firefly-linux-kernel-4.4.55.git] / net / bridge / br_input.c
index 7985deaff52f81cb98e665aaf3e913754b5a671b..04d6348fd530f854769bf2e0220ba4b4a4489833 100644 (file)
@@ -147,8 +147,8 @@ static int br_handle_local_finish(struct sk_buff *skb)
        struct net_bridge_port *p = br_port_get_rcu(skb->dev);
        u16 vid = 0;
 
-       br_vlan_get_tag(skb, &vid);
-       if (p->flags & BR_LEARNING)
+       /* check if vlan is allowed, to avoid spoofing */
+       if (p->flags & BR_LEARNING && br_should_learn(p, skb, &vid))
                br_fdb_update(p->br, p, eth_hdr(skb)->h_source, vid, false);
        return 0;        /* process further */
 }