net/mlx5e: Fix error flow cleanup in mlx5e_tc_tun_create_header_ipv4/6
authorEli Cohen <eli@mellanox.com>
Thu, 31 Oct 2019 07:00:43 +0000 (09:00 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Wed, 13 Nov 2019 22:25:03 +0000 (14:25 -0800)
Be sure to release the neighbour in case of failures after successful
route lookup.

Signed-off-by: Eli Cohen <eli@mellanox.com>
Reviewed-by: Roi Dayan <roid@mellanox.com>
Reviewed-by: Vlad Buslov <vladbu@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun.c

index 4f78efe..5316ced 100644 (file)
@@ -239,12 +239,15 @@ int mlx5e_tc_tun_create_header_ipv4(struct mlx5e_priv *priv,
        if (max_encap_size < ipv4_encap_size) {
                mlx5_core_warn(priv->mdev, "encap size %d too big, max supported is %d\n",
                               ipv4_encap_size, max_encap_size);
-               return -EOPNOTSUPP;
+               err = -EOPNOTSUPP;
+               goto out;
        }
 
        encap_header = kzalloc(ipv4_encap_size, GFP_KERNEL);
-       if (!encap_header)
-               return -ENOMEM;
+       if (!encap_header) {
+               err = -ENOMEM;
+               goto out;
+       }
 
        /* used by mlx5e_detach_encap to lookup a neigh hash table
         * entry in the neigh hash table when a user deletes a rule
@@ -355,12 +358,15 @@ int mlx5e_tc_tun_create_header_ipv6(struct mlx5e_priv *priv,
        if (max_encap_size < ipv6_encap_size) {
                mlx5_core_warn(priv->mdev, "encap size %d too big, max supported is %d\n",
                               ipv6_encap_size, max_encap_size);
-               return -EOPNOTSUPP;
+               err = -EOPNOTSUPP;
+               goto out;
        }
 
        encap_header = kzalloc(ipv6_encap_size, GFP_KERNEL);
-       if (!encap_header)
-               return -ENOMEM;
+       if (!encap_header) {
+               err = -ENOMEM;
+               goto out;
+       }
 
        /* used by mlx5e_detach_encap to lookup a neigh hash table
         * entry in the neigh hash table when a user deletes a rule