Merge tag 'mlx5-fixes-2021-09-07' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / drivers / infiniband / core / uverbs_std_types_qp.c
index c00cfb5..dd10754 100644 (file)
@@ -248,44 +248,23 @@ static int UVERBS_HANDLER(UVERBS_METHOD_QP_CREATE)(
        set_caps(&attr, &cap, true);
        mutex_init(&obj->mcast_lock);
 
-       if (attr.qp_type == IB_QPT_XRC_TGT)
-               qp = ib_create_qp(pd, &attr);
-       else
-               qp = _ib_create_qp(device, pd, &attr, &attrs->driver_udata, obj,
-                                  NULL);
-
+       qp = ib_create_qp_user(device, pd, &attr, &attrs->driver_udata, obj,
+                              KBUILD_MODNAME);
        if (IS_ERR(qp)) {
                ret = PTR_ERR(qp);
                goto err_put;
        }
+       ib_qp_usecnt_inc(qp);
 
-       if (attr.qp_type != IB_QPT_XRC_TGT) {
-               atomic_inc(&pd->usecnt);
-               if (attr.send_cq)
-                       atomic_inc(&attr.send_cq->usecnt);
-               if (attr.recv_cq)
-                       atomic_inc(&attr.recv_cq->usecnt);
-               if (attr.srq)
-                       atomic_inc(&attr.srq->usecnt);
-               if (attr.rwq_ind_tbl)
-                       atomic_inc(&attr.rwq_ind_tbl->usecnt);
-       } else {
+       if (attr.qp_type == IB_QPT_XRC_TGT) {
                obj->uxrcd = container_of(xrcd_uobj, struct ib_uxrcd_object,
                                          uobject);
                atomic_inc(&obj->uxrcd->refcnt);
-               /* It is done in _ib_create_qp for other QP types */
-               qp->uobject = obj;
        }
 
        obj->uevent.uobject.object = qp;
        uverbs_finalize_uobj_create(attrs, UVERBS_ATTR_CREATE_QP_HANDLE);
 
-       if (attr.qp_type != IB_QPT_XRC_TGT) {
-               ret = ib_create_qp_security(qp, device);
-               if (ret)
-                       return ret;
-       }
-
        set_caps(&attr, &cap, false);
        ret = uverbs_copy_to_struct_or_zero(attrs,
                                        UVERBS_ATTR_CREATE_QP_RESP_CAP, &cap,