IB: When attrs.udata/ufile is available use that instead of uobject
authorJason Gunthorpe <jgg@mellanox.com>
Mon, 1 Apr 2019 20:08:24 +0000 (17:08 -0300)
committerJason Gunthorpe <jgg@mellanox.com>
Mon, 8 Apr 2019 16:05:25 +0000 (13:05 -0300)
The ucontext and ufile should not be accessed via the uobject, all these
cases have an attrs so use that instead.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/core/rdma_core.c
drivers/infiniband/core/uverbs_std_types_counters.c
drivers/infiniband/core/uverbs_std_types_cq.c
drivers/infiniband/core/uverbs_std_types_dm.c
drivers/infiniband/core/uverbs_std_types_flow_action.c
include/rdma/uverbs_std_types.h

index d0a6755..e9c9052 100644 (file)
@@ -128,7 +128,7 @@ static int uverbs_destroy_uobject(struct ib_uobject *uobj,
                                  enum rdma_remove_reason reason,
                                  struct uverbs_attr_bundle *attrs)
 {
-       struct ib_uverbs_file *ufile = uobj->ufile;
+       struct ib_uverbs_file *ufile = attrs->ufile;
        unsigned long flags;
        int ret;
 
@@ -200,7 +200,7 @@ static int uverbs_destroy_uobject(struct ib_uobject *uobj,
  */
 int uobj_destroy(struct ib_uobject *uobj, struct uverbs_attr_bundle *attrs)
 {
-       struct ib_uverbs_file *ufile = uobj->ufile;
+       struct ib_uverbs_file *ufile = attrs->ufile;
        int ret;
 
        down_read(&ufile->hw_destroy_rwsem);
@@ -655,7 +655,7 @@ static int alloc_commit_fd_uobject(struct ib_uobject *uobj)
 int __must_check rdma_alloc_commit_uobject(struct ib_uobject *uobj,
                                           struct uverbs_attr_bundle *attrs)
 {
-       struct ib_uverbs_file *ufile = uobj->ufile;
+       struct ib_uverbs_file *ufile = attrs->ufile;
        int ret;
 
        /* alloc_commit consumes the uobj kref */
index 87aaf91..9f01330 100644 (file)
@@ -54,7 +54,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_COUNTERS_CREATE)(
 {
        struct ib_uobject *uobj = uverbs_attr_get_uobject(
                attrs, UVERBS_ATTR_CREATE_COUNTERS_HANDLE);
-       struct ib_device *ib_dev = uobj->context->device;
+       struct ib_device *ib_dev = attrs->context->device;
        struct ib_counters *counters;
        int ret;
 
index 977e386..db5c46a 100644 (file)
@@ -64,7 +64,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(
        struct ib_ucq_object *obj = container_of(
                uverbs_attr_get_uobject(attrs, UVERBS_ATTR_CREATE_CQ_HANDLE),
                typeof(*obj), uobject);
-       struct ib_device *ib_dev = obj->uobject.context->device;
+       struct ib_device *ib_dev = attrs->context->device;
        int ret;
        u64 user_handle;
        struct ib_cq_init_attr attr = {};
index c9b68dc..d5a1de3 100644 (file)
@@ -55,7 +55,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_DM_ALLOC)(
        struct ib_uobject *uobj =
                uverbs_attr_get(attrs, UVERBS_ATTR_ALLOC_DM_HANDLE)
                        ->obj_attr.uobject;
-       struct ib_device *ib_dev = uobj->context->device;
+       struct ib_device *ib_dev = attrs->context->device;
        struct ib_dm *dm;
        int ret;
 
@@ -72,7 +72,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_DM_ALLOC)(
        if (ret)
                return ret;
 
-       dm = ib_dev->ops.alloc_dm(ib_dev, uobj->context, &attr, attrs);
+       dm = ib_dev->ops.alloc_dm(ib_dev, attrs->context, &attr, attrs);
        if (IS_ERR(dm))
                return PTR_ERR(dm);
 
index d6dbc1d..459cf16 100644 (file)
@@ -310,7 +310,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_FLOW_ACTION_ESP_CREATE)(
 {
        struct ib_uobject *uobj = uverbs_attr_get_uobject(
                attrs, UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE);
-       struct ib_device *ib_dev = uobj->context->device;
+       struct ib_device *ib_dev = attrs->context->device;
        int                               ret;
        struct ib_flow_action             *action;
        struct ib_flow_action_esp_attr    esp_attr = {};
index b9226a5..05eabfd 100644 (file)
@@ -128,7 +128,7 @@ __uobj_alloc(const struct uverbs_api_object *obj,
                rdma_alloc_begin_uobject(obj, attrs->ufile, attrs);
 
        if (!IS_ERR(uobj))
-               *ib_dev = uobj->context->device;
+               *ib_dev = attrs->context->device;
        return uobj;
 }