aboutsummaryrefslogtreecommitdiffstats
path: root/net/8021q
diff options
context:
space:
mode:
Diffstat (limited to 'net/8021q')
-rw-r--r--net/8021q/vlan_core.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/net/8021q/vlan_core.c b/net/8021q/vlan_core.c
index 0eb486d342dc..b6d55a9304f2 100644
--- a/net/8021q/vlan_core.c
+++ b/net/8021q/vlan_core.c
@@ -24,8 +24,11 @@ int __vlan_hwaccel_rx(struct sk_buff *skb, struct vlan_group *grp,
24 24
25 if (vlan_dev) 25 if (vlan_dev)
26 skb->dev = vlan_dev; 26 skb->dev = vlan_dev;
27 else if (vlan_id) 27 else if (vlan_id) {
28 goto drop; 28 if (!(skb->dev->flags & IFF_PROMISC))
29 goto drop;
30 skb->pkt_type = PACKET_OTHERHOST;
31 }
29 32
30 return polling ? netif_receive_skb(skb) : netif_rx(skb); 33 return polling ? netif_receive_skb(skb) : netif_rx(skb);
31 34
@@ -101,8 +104,11 @@ vlan_gro_common(struct napi_struct *napi, struct vlan_group *grp,
101 104
102 if (vlan_dev) 105 if (vlan_dev)
103 skb->dev = vlan_dev; 106 skb->dev = vlan_dev;
104 else if (vlan_id) 107 else if (vlan_id) {
105 goto drop; 108 if (!(skb->dev->flags & IFF_PROMISC))
109 goto drop;
110 skb->pkt_type = PACKET_OTHERHOST;
111 }
106 112
107 for (p = napi->gro_list; p; p = p->next) { 113 for (p = napi->gro_list; p; p = p->next) {
108 unsigned long diffs; 114 unsigned long diffs;