OSDN Git Service

RDMA/mlx5: Fix memory leak in case we fail to add an IB device
authorMark Bloch <markb@mellanox.com>
Mon, 11 Feb 2019 15:40:54 +0000 (17:40 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 27 Jan 2020 13:50:22 +0000 (14:50 +0100)
[ Upstream commit fc9e4477f924e84d7798f7a1d41401d699de1219 ]

Make sure the IB device is freed on failure.

Fixes: b5ca15ad7e61 ("IB/mlx5: Add proper representors support")
Signed-off-by: Mark Bloch <markb@mellanox.com>
Reviewed-by: Bodong Wang <bodong@mellanox.com>
Reviewed-by: HÃ¥kon Bugge <haakon.bugge@oracle.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/mlx5/ib_rep.c

index 35a0e04..b841589 100644 (file)
@@ -69,8 +69,10 @@ mlx5_ib_vport_rep_load(struct mlx5_core_dev *dev, struct mlx5_eswitch_rep *rep)
        ibdev->mdev = dev;
        ibdev->num_ports = max(MLX5_CAP_GEN(dev, num_ports),
                               MLX5_CAP_GEN(dev, num_vhca_ports));
-       if (!__mlx5_ib_add(ibdev, &rep_profile))
+       if (!__mlx5_ib_add(ibdev, &rep_profile)) {
+               ib_dealloc_device(&ibdev->ib_dev);
                return -EINVAL;
+       }
 
        rep->rep_if[REP_IB].priv = ibdev;