OSDN Git Service

net: bridge: change return type of br_handle_ingress_vlan_tunnel
authorKangmin Park <l4stpr0gr4m@gmail.com>
Mon, 23 Aug 2021 10:21:18 +0000 (19:21 +0900)
committerJakub Kicinski <kuba@kernel.org>
Tue, 24 Aug 2021 23:51:09 +0000 (16:51 -0700)
br_handle_ingress_vlan_tunnel() is only referenced in
br_handle_frame(). If br_handle_ingress_vlan_tunnel() is called and
return non-zero value, goto drop in br_handle_frame().

But, br_handle_ingress_vlan_tunnel() always return 0. So, the
routines that check the return value and goto drop has no meaning.

Therefore, change return type of br_handle_ingress_vlan_tunnel() to
void and remove if statement of br_handle_frame().

Signed-off-by: Kangmin Park <l4stpr0gr4m@gmail.com>
Acked-by: Nikolay Aleksandrov <nikolay@nvidia.com>
Link: https://lore.kernel.org/r/20210823102118.17966-1-l4stpr0gr4m@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/bridge/br_input.c
net/bridge/br_private_tunnel.h
net/bridge/br_vlan_tunnel.c

index 8a0c0cc..b50382f 100644 (file)
@@ -294,11 +294,8 @@ static rx_handler_result_t br_handle_frame(struct sk_buff **pskb)
        memset(skb->cb, 0, sizeof(struct br_input_skb_cb));
 
        p = br_port_get_rcu(skb->dev);
-       if (p->flags & BR_VLAN_TUNNEL) {
-               if (br_handle_ingress_vlan_tunnel(skb, p,
-                                                 nbp_vlan_group_rcu(p)))
-                       goto drop;
-       }
+       if (p->flags & BR_VLAN_TUNNEL)
+               br_handle_ingress_vlan_tunnel(skb, p, nbp_vlan_group_rcu(p));
 
        if (unlikely(is_link_local_ether_addr(dest))) {
                u16 fwd_mask = p->br->group_fwd_mask_required;
index c54cc26..2b05328 100644 (file)
@@ -38,9 +38,9 @@ int nbp_vlan_tunnel_info_add(const struct net_bridge_port *port, u16 vid,
 void nbp_vlan_tunnel_info_flush(struct net_bridge_port *port);
 void vlan_tunnel_info_del(struct net_bridge_vlan_group *vg,
                          struct net_bridge_vlan *vlan);
-int br_handle_ingress_vlan_tunnel(struct sk_buff *skb,
-                                 struct net_bridge_port *p,
-                                 struct net_bridge_vlan_group *vg);
+void br_handle_ingress_vlan_tunnel(struct sk_buff *skb,
+                                  struct net_bridge_port *p,
+                                  struct net_bridge_vlan_group *vg);
 int br_handle_egress_vlan_tunnel(struct sk_buff *skb,
                                 struct net_bridge_vlan *vlan);
 bool vlan_tunid_inrange(const struct net_bridge_vlan *v_curr,
index 0101744..6399a8a 100644 (file)
@@ -158,30 +158,28 @@ void vlan_tunnel_deinit(struct net_bridge_vlan_group *vg)
        rhashtable_destroy(&vg->tunnel_hash);
 }
 
-int br_handle_ingress_vlan_tunnel(struct sk_buff *skb,
-                                 struct net_bridge_port *p,
-                                 struct net_bridge_vlan_group *vg)
+void br_handle_ingress_vlan_tunnel(struct sk_buff *skb,
+                                  struct net_bridge_port *p,
+                                  struct net_bridge_vlan_group *vg)
 {
        struct ip_tunnel_info *tinfo = skb_tunnel_info(skb);
        struct net_bridge_vlan *vlan;
 
        if (!vg || !tinfo)
-               return 0;
+               return;
 
        /* if already tagged, ignore */
        if (skb_vlan_tagged(skb))
-               return 0;
+               return;
 
        /* lookup vid, given tunnel id */
        vlan = br_vlan_tunnel_lookup(&vg->tunnel_hash, tinfo->key.tun_id);
        if (!vlan)
-               return 0;
+               return;
 
        skb_dst_drop(skb);
 
        __vlan_hwaccel_put_tag(skb, p->br->vlan_proto, vlan->vid);
-
-       return 0;
 }
 
 int br_handle_egress_vlan_tunnel(struct sk_buff *skb,