br_handle_ingress_vlan_tunnel() is called in br_handle_frame() and goto drop when br_handle_ingress_vlan_tunnel() return non-zero. But, br_handle_ingress_vlan_tunnel() always return 0. So, the goto routine is currently meaningless. However, paired function br_handle_egress_vlan_tunnel() call skb_vlan_pop(). So, change br_handle_ingress_vlan_tunnel() to call skb_vlan_push() instead of __vlan_hwaccel_put_tag(). And return the return value of skb_vlan_push(). Signed-off-by: Kangmin Park <l4stpr0gr4m@xxxxxxxxx> --- net/bridge/br_vlan_tunnel.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/net/bridge/br_vlan_tunnel.c b/net/bridge/br_vlan_tunnel.c index 01017448ebde..7b5a33dc9d4d 100644 --- a/net/bridge/br_vlan_tunnel.c +++ b/net/bridge/br_vlan_tunnel.c @@ -179,9 +179,7 @@ int br_handle_ingress_vlan_tunnel(struct sk_buff *skb, skb_dst_drop(skb); - __vlan_hwaccel_put_tag(skb, p->br->vlan_proto, vlan->vid); - - return 0; + return skb_vlan_push(skb, p->br->vlan_proto, vlan->vid); } int br_handle_egress_vlan_tunnel(struct sk_buff *skb, -- 2.26.2