OSDN Git Service

IB/uverbs: Tidy up remaining references to ucontext
authorJason Gunthorpe <jgg@mellanox.com>
Wed, 4 Jul 2018 08:32:10 +0000 (11:32 +0300)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 9 Jul 2018 17:26:17 +0000 (11:26 -0600)
Unnecessary clutter, to indirect through ucontext when the ufile would do.
Generally most of the code code should only be working with ufile, except
for a few places that touch the driver interface.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
drivers/infiniband/core/rdma_core.c
drivers/infiniband/core/uverbs_main.c
drivers/infiniband/core/uverbs_std_types_cq.c
drivers/infiniband/core/uverbs_std_types_dm.c

index dcaf381..98e55cb 100644 (file)
@@ -180,19 +180,19 @@ static int idr_add_uobj(struct ib_uobject *uobj)
        int ret;
 
        idr_preload(GFP_KERNEL);
-       spin_lock(&uobj->context->ufile->idr_lock);
+       spin_lock(&uobj->ufile->idr_lock);
 
        /*
         * We start with allocating an idr pointing to NULL. This represents an
         * object which isn't initialized yet. We'll replace it later on with
         * the real object once we commit.
         */
-       ret = idr_alloc(&uobj->context->ufile->idr, NULL, 0,
+       ret = idr_alloc(&uobj->ufile->idr, NULL, 0,
                        min_t(unsigned long, U32_MAX - 1, INT_MAX), GFP_NOWAIT);
        if (ret >= 0)
                uobj->id = ret;
 
-       spin_unlock(&uobj->context->ufile->idr_lock);
+       spin_unlock(&uobj->ufile->idr_lock);
        idr_preload_end();
 
        return ret < 0 ? ret : 0;
@@ -204,9 +204,9 @@ static int idr_add_uobj(struct ib_uobject *uobj)
  */
 static void uverbs_idr_remove_uobj(struct ib_uobject *uobj)
 {
-       spin_lock(&uobj->context->ufile->idr_lock);
-       idr_remove(&uobj->context->ufile->idr, uobj->id);
-       spin_unlock(&uobj->context->ufile->idr_lock);
+       spin_lock(&uobj->ufile->idr_lock);
+       idr_remove(&uobj->ufile->idr, uobj->id);
+       spin_unlock(&uobj->ufile->idr_lock);
 }
 
 /* Returns the ib_uobject or an error. The caller should check for IS_ERR. */
@@ -519,14 +519,13 @@ out:
 
 static void alloc_commit_idr_uobject(struct ib_uobject *uobj)
 {
-       spin_lock(&uobj->context->ufile->idr_lock);
+       spin_lock(&uobj->ufile->idr_lock);
        /*
         * We already allocated this IDR with a NULL object, so
         * this shouldn't fail.
         */
-       WARN_ON(idr_replace(&uobj->context->ufile->idr,
-                           uobj, uobj->id));
-       spin_unlock(&uobj->context->ufile->idr_lock);
+       WARN_ON(idr_replace(&uobj->ufile->idr, uobj, uobj->id));
+       spin_unlock(&uobj->ufile->idr_lock);
 }
 
 static void alloc_commit_fd_uobject(struct ib_uobject *uobj)
index 037c897..5d64b9c 100644 (file)
@@ -883,8 +883,6 @@ static int ib_uverbs_open(struct inode *inode, struct file *filp)
        file->device     = dev;
        spin_lock_init(&file->idr_lock);
        idr_init(&file->idr);
-       file->ucontext   = NULL;
-       file->async_file = NULL;
        kref_init(&file->ref);
        mutex_init(&file->mutex);
        mutex_init(&file->cleanup_mutex);
index 1a14c24..32c75cd 100644 (file)
@@ -61,7 +61,6 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(struct ib_device *ib_dev,
                                                   struct ib_uverbs_file *file,
                                                   struct uverbs_attr_bundle *attrs)
 {
-       struct ib_ucontext *ucontext = file->ucontext;
        struct ib_ucq_object           *obj;
        struct ib_udata uhw;
        int ret;
@@ -98,7 +97,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(struct ib_device *ib_dev,
                uverbs_uobject_get(ev_file_uobj);
        }
 
-       if (attr.comp_vector >= ucontext->ufile->device->num_comp_vectors) {
+       if (attr.comp_vector >= file->device->num_comp_vectors) {
                ret = -EINVAL;
                goto err_event_file;
        }
@@ -106,7 +105,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(struct ib_device *ib_dev,
        obj = container_of(uverbs_attr_get_uobject(attrs,
                                                   UVERBS_ATTR_CREATE_CQ_HANDLE),
                           typeof(*obj), uobject);
-       obj->uverbs_file           = ucontext->ufile;
+       obj->uverbs_file           = file;
        obj->comp_events_reported  = 0;
        obj->async_events_reported = 0;
        INIT_LIST_HEAD(&obj->comp_list);
@@ -115,7 +114,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(struct ib_device *ib_dev,
        /* Temporary, only until drivers get the new uverbs_attr_bundle */
        create_udata(attrs, &uhw);
 
-       cq = ib_dev->create_cq(ib_dev, &attr, ucontext, &uhw);
+       cq = ib_dev->create_cq(ib_dev, &attr, file->ucontext, &uhw);
        if (IS_ERR(cq)) {
                ret = PTR_ERR(cq);
                goto err_event_file;
index 8a25481..9e148e3 100644 (file)
@@ -50,7 +50,6 @@ static int UVERBS_HANDLER(UVERBS_METHOD_DM_ALLOC)(struct ib_device *ib_dev,
                                                  struct ib_uverbs_file *file,
                                                  struct uverbs_attr_bundle *attrs)
 {
-       struct ib_ucontext *ucontext = file->ucontext;
        struct ib_dm_alloc_attr attr = {};
        struct ib_uobject *uobj;
        struct ib_dm *dm;
@@ -71,7 +70,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_DM_ALLOC)(struct ib_device *ib_dev,
 
        uobj = uverbs_attr_get(attrs, UVERBS_ATTR_ALLOC_DM_HANDLE)->obj_attr.uobject;
 
-       dm = ib_dev->alloc_dm(ib_dev, ucontext, &attr, attrs);
+       dm = ib_dev->alloc_dm(ib_dev, file->ucontext, &attr, attrs);
        if (IS_ERR(dm))
                return PTR_ERR(dm);