]> git.hungrycats.org Git - linux/commitdiff
IB/mlx4: Fix create CQ error flow
authorMatan Barak <matanb@mellanox.com>
Thu, 10 Nov 2016 09:30:55 +0000 (11:30 +0200)
committerJiri Slaby <jslaby@suse.cz>
Thu, 24 Nov 2016 15:23:57 +0000 (16:23 +0100)
commit 593ff73bcfdc79f79a8a0df55504f75ad3e5d1a9 upstream.

Currently, if ib_copy_to_udata fails, the CQ
won't be deleted from the radix tree and the HW (HW2SW).

Fixes: 225c7b1feef1 ('IB/mlx4: Add a driver Mellanox ConnectX InfiniBand adapters')
Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Daniel Jurgens <danielj@mellanox.com>
Reviewed-by: Mark Bloch <markb@mellanox.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
Signed-off-by: Doug Ledford <dledford@redhat.com>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
drivers/infiniband/hw/mlx4/cq.c

index d5e60f44ba5ad7c4f5ad53d7e0fe348248ed797b..5b8a62c6bc8d97bd64535a0dee91ce1797f8ddc1 100644 (file)
@@ -239,11 +239,14 @@ struct ib_cq *mlx4_ib_create_cq(struct ib_device *ibdev, int entries, int vector
        if (context)
                if (ib_copy_to_udata(udata, &cq->mcq.cqn, sizeof (__u32))) {
                        err = -EFAULT;
-                       goto err_dbmap;
+                       goto err_cq_free;
                }
 
        return &cq->ibcq;
 
+err_cq_free:
+       mlx4_cq_free(dev->dev, &cq->mcq);
+
 err_dbmap:
        if (context)
                mlx4_ib_db_unmap_user(to_mucontext(context), &cq->db);