IB/uverbs: Tidy uverbs_uobject_add
authorJason Gunthorpe <jgg@mellanox.com>
Tue, 13 Feb 2018 10:18:39 +0000 (12:18 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Wed, 28 Feb 2018 19:55:03 +0000 (12:55 -0700)
Maintaining the uobjects list is mandatory, hoist it into the common
rdma_alloc_commit_uobject() function and inline it as there is now
only one caller.

Signed-off-by: Leon Romanovsky <leon@kernel.org>
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/rdma_core.c

index d8eead5..a6e9049 100644 (file)
@@ -350,13 +350,6 @@ struct ib_uobject *rdma_alloc_begin_uobject(const struct uverbs_obj_type *type,
        return type->type_class->alloc_begin(type, ucontext);
 }
 
-static void uverbs_uobject_add(struct ib_uobject *uobject)
-{
-       mutex_lock(&uobject->context->uobjects_lock);
-       list_add(&uobject->list, &uobject->context->uobjects);
-       mutex_unlock(&uobject->context->uobjects_lock);
-}
-
 static int __must_check remove_commit_idr_uobject(struct ib_uobject *uobj,
                                                  enum rdma_remove_reason why)
 {
@@ -502,7 +495,6 @@ out:
 
 static void alloc_commit_idr_uobject(struct ib_uobject *uobj)
 {
-       uverbs_uobject_add(uobj);
        spin_lock(&uobj->context->ufile->idr_lock);
        /*
         * We already allocated this IDR with a NULL object, so
@@ -518,7 +510,6 @@ static void alloc_commit_fd_uobject(struct ib_uobject *uobj)
        struct ib_uobject_file *uobj_file =
                container_of(uobj, struct ib_uobject_file, uobj);
 
-       uverbs_uobject_add(&uobj_file->uobj);
        fd_install(uobj_file->uobj.id, uobj->object);
        /* This shouldn't be used anymore. Use the file object instead */
        uobj_file->uobj.id = 0;
@@ -545,6 +536,10 @@ int rdma_alloc_commit_uobject(struct ib_uobject *uobj)
        assert_uverbs_usecnt(uobj, true);
        atomic_set(&uobj->usecnt, 0);
 
+       mutex_lock(&uobj->context->uobjects_lock);
+       list_add(&uobj->list, &uobj->context->uobjects);
+       mutex_unlock(&uobj->context->uobjects_lock);
+
        uobj->type->type_class->alloc_commit(uobj);
        up_read(&uobj->context->cleanup_rwsem);