]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
RDMA/mlx5: Don't leak UARs in case of free fails
authorLeon Romanovsky <leonro@mellanox.com>
Wed, 27 Jun 2018 07:44:24 +0000 (10:44 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 29 Jun 2018 17:45:50 +0000 (11:45 -0600)
The failure in releasing one UAR doesn't mean that we can't continue to
release rest of system pages, so don't return too early.

As part of cleanup, there is no need to print warning if
mlx5_cmd_free_uar() fails because such warning will be printed as part of
mlx5_cmd_exec().

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/mlx5/main.c

index 5d030bc3cdd8e04f54fe9c09361b89a8a2786ea8..322f036a1264c85747f1560bc9cc4879a239a4e6 100644 (file)
@@ -1559,25 +1559,17 @@ error:
        return err;
 }
 
-static int deallocate_uars(struct mlx5_ib_dev *dev, struct mlx5_ib_ucontext *context)
+static void deallocate_uars(struct mlx5_ib_dev *dev,
+                           struct mlx5_ib_ucontext *context)
 {
        struct mlx5_bfreg_info *bfregi;
-       int err;
        int i;
 
        bfregi = &context->bfregi;
-       for (i = 0; i < bfregi->num_sys_pages; i++) {
+       for (i = 0; i < bfregi->num_sys_pages; i++)
                if (i < bfregi->num_static_sys_pages ||
-                   bfregi->sys_pages[i] != MLX5_IB_INVALID_UAR_INDEX) {
-                       err = mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i]);
-                       if (err) {
-                               mlx5_ib_warn(dev, "failed to free uar %d, err=%d\n", i, err);
-                               return err;
-                       }
-               }
-       }
-
-       return 0;
+                   bfregi->sys_pages[i] != MLX5_IB_INVALID_UAR_INDEX)
+                       mlx5_cmd_free_uar(dev->mdev, bfregi->sys_pages[i]);
 }
 
 static int mlx5_ib_alloc_transport_domain(struct mlx5_ib_dev *dev, u32 *tdn)