mlx4: Do type_clear() for devlink ports when type_set() was called previously
authorJiri Pirko <jiri@nvidia.com>
Thu, 25 Aug 2022 11:40:31 +0000 (13:40 +0200)
committerJakub Kicinski <kuba@kernel.org>
Sat, 27 Aug 2022 00:01:00 +0000 (17:01 -0700)
Whenever the type_set() is called on a devlink port, accompany it by
matching type_clear() during cleanup.

Signed-off-by: Jiri Pirko <jiri@nvidia.com>
Link: https://lore.kernel.org/r/20220825114031.1361478-1-jiri@resnulli.us
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx4/main.c

index 78c5f40..d3fc86c 100644 (file)
@@ -3071,6 +3071,7 @@ static int mlx4_init_port_info(struct mlx4_dev *dev, int port)
        err = device_create_file(&dev->persist->pdev->dev, &info->port_attr);
        if (err) {
                mlx4_err(dev, "Failed to create file for port %d\n", port);
+               devlink_port_type_clear(&info->devlink_port);
                devl_port_unregister(&info->devlink_port);
                info->port = -1;
                return err;
@@ -3093,6 +3094,7 @@ static int mlx4_init_port_info(struct mlx4_dev *dev, int port)
                mlx4_err(dev, "Failed to create mtu file for port %d\n", port);
                device_remove_file(&info->dev->persist->pdev->dev,
                                   &info->port_attr);
+               devlink_port_type_clear(&info->devlink_port);
                devl_port_unregister(&info->devlink_port);
                info->port = -1;
                return err;
@@ -3109,6 +3111,7 @@ static void mlx4_cleanup_port_info(struct mlx4_port_info *info)
        device_remove_file(&info->dev->persist->pdev->dev, &info->port_attr);
        device_remove_file(&info->dev->persist->pdev->dev,
                           &info->port_mtu_attr);
+       devlink_port_type_clear(&info->devlink_port);
        devl_port_unregister(&info->devlink_port);
 
 #ifdef CONFIG_RFS_ACCEL