RDMA/mlx5: Avoid memory leak in case of XRCD dealloc failure
authorLeon Romanovsky <leonro@mellanox.com>
Sun, 28 Jan 2018 09:25:30 +0000 (11:25 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:50:22 +0000 (07:50 +0200)
[ Upstream commit b081808a66345ba725b77ecd8d759bee874cd937 ]

Failure in XRCD FW deallocation command leaves memory leaked and
returns error to the user which he can't do anything about it.

This patch changes behavior to always free memory and always return
success to the user.

Fixes: e126ba97dba9 ("mlx5: Add driver for Mellanox Connect-IB adapters")
Reviewed-by: Majd Dibbiny <majd@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/infiniband/hw/mlx5/qp.c

index 3cdcbfbd6a79ef5d7cddb6b3a26ddb0a327b3035..b2ccbc03923ef4124d36305b878f2def82ea6018 100644 (file)
@@ -4610,13 +4610,10 @@ int mlx5_ib_dealloc_xrcd(struct ib_xrcd *xrcd)
        int err;
 
        err = mlx5_core_xrcd_dealloc(dev->mdev, xrcdn);
-       if (err) {
+       if (err)
                mlx5_ib_warn(dev, "failed to dealloc xrcdn 0x%x\n", xrcdn);
-               return err;
-       }
 
        kfree(xrcd);
-
        return 0;
 }