RDMA/verbs: Drop kernel variant of destroy_flow
authorLeon Romanovsky <leonro@mellanox.com>
Sun, 24 Jun 2018 08:23:45 +0000 (11:23 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 25 Jun 2018 21:22:01 +0000 (15:22 -0600)
Following the removal of ib_create_flow(), adjust the code to get rid of
ib_destroy_flow() too.

Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/uverbs_cmd.c
drivers/infiniband/core/uverbs_std_types.c
drivers/infiniband/core/verbs.c
include/rdma/ib_verbs.h

index 985dc86..74c5bc9 100644 (file)
@@ -3631,7 +3631,8 @@ int ib_uverbs_ex_create_flow(struct ib_uverbs_file *file,
                kfree(kern_flow_attr);
        return 0;
 err_copy:
-       ib_destroy_flow(flow_id);
+       if (!qp->device->destroy_flow(flow_id))
+               atomic_dec(&qp->usecnt);
 err_free:
        ib_uverbs_flow_resources_free(uflow_res);
 err_free_flow_attr:
index 0df0ac9..c50d738 100644 (file)
@@ -48,14 +48,17 @@ static int uverbs_free_ah(struct ib_uobject *uobject,
 static int uverbs_free_flow(struct ib_uobject *uobject,
                            enum rdma_remove_reason why)
 {
-       int ret;
        struct ib_flow *flow = (struct ib_flow *)uobject->object;
        struct ib_uflow_object *uflow =
                container_of(uobject, struct ib_uflow_object, uobject);
+       struct ib_qp *qp = flow->qp;
+       int ret;
 
-       ret = ib_destroy_flow(flow);
-       if (!ret)
+       ret = qp->device->destroy_flow(flow);
+       if (!ret) {
+               atomic_dec(&qp->usecnt);
                ib_uverbs_flow_resources_free(uflow->resources);
+       }
 
        return ret;
 }
index 5ada09f..128d949 100644 (file)
@@ -2275,18 +2275,6 @@ int ib_destroy_rwq_ind_table(struct ib_rwq_ind_table *rwq_ind_table)
 }
 EXPORT_SYMBOL(ib_destroy_rwq_ind_table);
 
-int ib_destroy_flow(struct ib_flow *flow_id)
-{
-       int err;
-       struct ib_qp *qp = flow_id->qp;
-
-       err = qp->device->destroy_flow(flow_id);
-       if (!err)
-               atomic_dec(&qp->usecnt);
-       return err;
-}
-EXPORT_SYMBOL(ib_destroy_flow);
-
 int ib_check_mr_status(struct ib_mr *mr, u32 check_mask,
                       struct ib_mr_status *mr_status)
 {
index 1c72ca8..8e726ff 100644 (file)
@@ -3807,8 +3807,6 @@ struct ib_xrcd *__ib_alloc_xrcd(struct ib_device *device, const char *caller);
  */
 int ib_dealloc_xrcd(struct ib_xrcd *xrcd);
 
-int ib_destroy_flow(struct ib_flow *flow_id);
-
 static inline int ib_check_mr_access(int flags)
 {
        /*