};
 
 struct uverbs_api_ioctl_method {
-       int (__rcu *handler)(struct ib_uverbs_file *ufile,
-                            struct uverbs_attr_bundle *ctx);
+       int(__rcu *handler)(struct uverbs_attr_bundle *attrs);
        DECLARE_BITMAP(attr_mandatory, UVERBS_API_ATTR_BKEY_LEN);
        u16 bundle_size;
        u8 use_stack:1;
 
 static int ib_uverbs_run_method(struct bundle_priv *pbundle,
                                unsigned int num_attrs)
 {
-       int (*handler)(struct ib_uverbs_file *ufile,
-                      struct uverbs_attr_bundle *ctx);
+       int (*handler)(struct uverbs_attr_bundle *attrs);
        size_t uattrs_size = array_size(sizeof(*pbundle->uattrs), num_attrs);
        unsigned int destroy_bkey = pbundle->method_elm->destroy_bkey;
        unsigned int i;
                        return ret;
                __clear_bit(destroy_bkey, pbundle->uobj_finalize);
 
-               ret = handler(pbundle->bundle.ufile, &pbundle->bundle);
+               ret = handler(&pbundle->bundle);
                uobj_put_destroy(destroy_attr->uobject);
        } else {
-               ret = handler(pbundle->bundle.ufile, &pbundle->bundle);
+               ret = handler(&pbundle->bundle);
        }
 
        /*
 
        return 0;
 };
 
-int uverbs_destroy_def_handler(struct ib_uverbs_file *file,
-                              struct uverbs_attr_bundle *attrs)
+int uverbs_destroy_def_handler(struct uverbs_attr_bundle *attrs)
 {
        return 0;
 }
 
 }
 
 static int UVERBS_HANDLER(UVERBS_METHOD_COUNTERS_CREATE)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct ib_uobject *uobj = uverbs_attr_get_uobject(
                attrs, UVERBS_ATTR_CREATE_COUNTERS_HANDLE);
 }
 
 static int UVERBS_HANDLER(UVERBS_METHOD_COUNTERS_READ)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct ib_counters_read_attr read_attr = {};
        const struct uverbs_attr *uattr;
 
 }
 
 static int UVERBS_HANDLER(UVERBS_METHOD_CQ_CREATE)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct ib_ucq_object *obj = container_of(
                uverbs_attr_get_uobject(attrs, UVERBS_ATTR_CREATE_CQ_HANDLE),
                uverbs_uobject_get(ev_file_uobj);
        }
 
-       if (attr.comp_vector >= file->device->num_comp_vectors) {
+       if (attr.comp_vector >= attrs->ufile->device->num_comp_vectors) {
                ret = -EINVAL;
                goto err_event_file;
        }
        UVERBS_ATTR_UHW());
 
 static int UVERBS_HANDLER(UVERBS_METHOD_CQ_DESTROY)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct ib_uobject *uobj =
                uverbs_attr_get_uobject(attrs, UVERBS_ATTR_DESTROY_CQ_HANDLE);
 
        return dm->device->dealloc_dm(dm);
 }
 
-static int
-UVERBS_HANDLER(UVERBS_METHOD_DM_ALLOC)(struct ib_uverbs_file *file,
-                                      struct uverbs_attr_bundle *attrs)
+static int UVERBS_HANDLER(UVERBS_METHOD_DM_ALLOC)(
+       struct uverbs_attr_bundle *attrs)
 {
        struct ib_dm_alloc_attr attr = {};
        struct ib_uobject *uobj =
 
 
 #define ESP_LAST_SUPPORTED_FLAG                IB_UVERBS_FLOW_ACTION_ESP_FLAGS_ESN_NEW_WINDOW
 static int parse_flow_action_esp(struct ib_device *ib_dev,
-                                struct ib_uverbs_file *file,
                                 struct uverbs_attr_bundle *attrs,
                                 struct ib_flow_action_esp_attr *esp_attr,
                                 bool is_modify)
 }
 
 static int UVERBS_HANDLER(UVERBS_METHOD_FLOW_ACTION_ESP_CREATE)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct ib_uobject *uobj = uverbs_attr_get_uobject(
                attrs, UVERBS_ATTR_CREATE_FLOW_ACTION_ESP_HANDLE);
        if (!ib_dev->create_flow_action_esp)
                return -EOPNOTSUPP;
 
-       ret = parse_flow_action_esp(ib_dev, file, attrs, &esp_attr, false);
+       ret = parse_flow_action_esp(ib_dev, attrs, &esp_attr, false);
        if (ret)
                return ret;
 
 }
 
 static int UVERBS_HANDLER(UVERBS_METHOD_FLOW_ACTION_ESP_MODIFY)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct ib_uobject *uobj = uverbs_attr_get_uobject(
                attrs, UVERBS_ATTR_MODIFY_FLOW_ACTION_ESP_HANDLE);
        if (!action->device->modify_flow_action_esp)
                return -EOPNOTSUPP;
 
-       ret = parse_flow_action_esp(action->device, file, attrs, &esp_attr,
-                                   true);
+       ret = parse_flow_action_esp(action->device, attrs, &esp_attr, true);
        if (ret)
                return ret;
 
 
 }
 
 static int UVERBS_HANDLER(UVERBS_METHOD_DM_MR_REG)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct ib_dm_mr_attr attr = {};
        struct ib_uobject *uobj =
 
        u32                             out[MLX5_ST_SZ_DW(general_obj_out_cmd_hdr)];
 };
 
-static struct mlx5_ib_ucontext *devx_ufile2uctx(struct ib_uverbs_file *file)
+static struct mlx5_ib_ucontext *
+devx_ufile2uctx(const struct uverbs_attr_bundle *attrs)
 {
-       return to_mucontext(ib_uverbs_get_ucontext_file(file));
+       return to_mucontext(ib_uverbs_get_ucontext(attrs));
 }
 
 int mlx5_ib_devx_create(struct mlx5_ib_dev *dev)
 }
 
 static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_QUERY_EQN)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct mlx5_ib_ucontext *c;
        struct mlx5_ib_dev *dev;
                             MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC))
                return -EFAULT;
 
-       c = devx_ufile2uctx(file);
+       c = devx_ufile2uctx(attrs);
        if (IS_ERR(c))
                return PTR_ERR(c);
        dev = to_mdev(c->ibucontext.device);
  * queue or arm its CQ for event generation), no further harm is expected.
  */
 static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_QUERY_UAR)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct mlx5_ib_ucontext *c;
        struct mlx5_ib_dev *dev;
        u32 user_idx;
        s32 dev_idx;
 
-       c = devx_ufile2uctx(file);
+       c = devx_ufile2uctx(attrs);
        if (IS_ERR(c))
                return PTR_ERR(c);
        dev = to_mdev(c->ibucontext.device);
 }
 
 static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_OTHER)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct mlx5_ib_ucontext *c;
        struct mlx5_ib_dev *dev;
        int err;
        int uid;
 
-       c = devx_ufile2uctx(file);
+       c = devx_ufile2uctx(attrs);
        if (IS_ERR(c))
                return PTR_ERR(c);
        dev = to_mdev(c->ibucontext.device);
 }
 
 static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_OBJ_CREATE)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        void *cmd_in = uverbs_attr_get_alloced_ptr(attrs, MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_IN);
        int cmd_out_len =  uverbs_attr_get_len(attrs,
 }
 
 static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_OBJ_MODIFY)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        void *cmd_in = uverbs_attr_get_alloced_ptr(attrs, MLX5_IB_ATTR_DEVX_OBJ_MODIFY_CMD_IN);
        int cmd_out_len = uverbs_attr_get_len(attrs,
 }
 
 static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_OBJ_QUERY)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        void *cmd_in = uverbs_attr_get_alloced_ptr(attrs, MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_IN);
        int cmd_out_len = uverbs_attr_get_len(attrs,
 }
 
 static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_UMEM_REG)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct devx_umem_reg_cmd cmd;
        struct devx_umem *obj;
 
 
 #define MLX5_IB_CREATE_FLOW_MAX_FLOW_ACTIONS 2
 static int UVERBS_HANDLER(MLX5_IB_METHOD_CREATE_FLOW)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct mlx5_flow_act flow_act = {.flow_tag = MLX5_FS_DEFAULT_FLOW_TAG};
        struct mlx5_ib_flow_handler *flow_handler;
 }
 
 static int UVERBS_HANDLER(MLX5_IB_METHOD_FLOW_MATCHER_CREATE)(
-       struct ib_uverbs_file *file, struct uverbs_attr_bundle *attrs)
+       struct uverbs_attr_bundle *attrs)
 {
        struct ib_uobject *uobj = uverbs_attr_get_uobject(
                attrs, MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE);
 }
 
 static int UVERBS_HANDLER(MLX5_IB_METHOD_FLOW_ACTION_CREATE_MODIFY_HEADER)(
-       struct ib_uverbs_file *file,
        struct uverbs_attr_bundle *attrs)
 {
        struct ib_uobject *uobj = uverbs_attr_get_uobject(
 }
 
 static int UVERBS_HANDLER(MLX5_IB_METHOD_FLOW_ACTION_CREATE_PACKET_REFORMAT)(
-       struct ib_uverbs_file *file,
        struct uverbs_attr_bundle *attrs)
 {
        struct ib_uobject *uobj = uverbs_attr_get_uobject(attrs,
 
 
 struct ib_ucontext *ib_uverbs_get_ucontext_file(struct ib_uverbs_file *ufile);
 
-int uverbs_destroy_def_handler(struct ib_uverbs_file *file,
-                              struct uverbs_attr_bundle *attrs);
+
+int uverbs_destroy_def_handler(struct uverbs_attr_bundle *attrs);
 
 struct net_device *rdma_alloc_netdev(struct ib_device *device, u8 port_num,
                                     enum rdma_netdev_t type, const char *name,
 
        u32                                  flags;
        size_t                               num_attrs;
        const struct uverbs_attr_def * const (*attrs)[];
-       int (*handler)(struct ib_uverbs_file *ufile,
-                      struct uverbs_attr_bundle *ctx);
+       int (*handler)(struct uverbs_attr_bundle *attrs);
 };
 
 struct uverbs_object_def {