mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-10 13:04:36 -05:00
IB/uverbs: Add ib_ucontext to uverbs_attr_bundle sent from ioctl and cmd flows
Add ib_ucontext to the uverbs_attr_bundle sent down the iocl and cmd flows as soon as the flow has ib_uobject. In addition, remove rdma_get_ucontext helper function that is only used by ib_umem_get. Signed-off-by: Shamir Rabinovitch <shamir.rabinovitch@oracle.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
committed by
Jason Gunthorpe
parent
0dd9ce18b9
commit
3d9dfd0603
@@ -4247,8 +4247,6 @@ void rdma_roce_rescan_device(struct ib_device *ibdev);
|
||||
|
||||
struct ib_ucontext *ib_uverbs_get_ucontext_file(struct ib_uverbs_file *ufile);
|
||||
|
||||
struct ib_ucontext *rdma_get_ucontext(struct ib_udata *udata);
|
||||
|
||||
int uverbs_destroy_def_handler(struct uverbs_attr_bundle *attrs);
|
||||
|
||||
struct net_device *rdma_alloc_netdev(struct ib_device *device, u8 port_num,
|
||||
|
||||
@@ -652,6 +652,7 @@ struct uverbs_attr_bundle {
|
||||
struct ib_udata driver_udata;
|
||||
struct ib_udata ucore;
|
||||
struct ib_uverbs_file *ufile;
|
||||
struct ib_ucontext *context;
|
||||
DECLARE_BITMAP(attr_present, UVERBS_API_ATTR_BKEY_LEN);
|
||||
struct uverbs_attr attrs[];
|
||||
};
|
||||
|
||||
@@ -48,9 +48,12 @@
|
||||
#define uobj_get_type(_attrs, _object) \
|
||||
uapi_get_object((_attrs)->ufile->device->uapi, _object)
|
||||
|
||||
struct ib_uobject *_uobj_get_read(enum uverbs_default_objects type,
|
||||
u32 object_id,
|
||||
struct uverbs_attr_bundle *attrs);
|
||||
|
||||
#define uobj_get_read(_type, _id, _attrs) \
|
||||
rdma_lookup_get_uobject(uobj_get_type(_attrs, _type), (_attrs)->ufile, \
|
||||
_uobj_check_id(_id), UVERBS_LOOKUP_READ)
|
||||
_uobj_get_read(_type, _uobj_check_id(_id), _attrs)
|
||||
|
||||
#define ufd_get_read(_type, _fdnum, _attrs) \
|
||||
rdma_lookup_get_uobject(uobj_get_type(_attrs, _type), (_attrs)->ufile, \
|
||||
@@ -67,9 +70,12 @@ static inline void *_uobj_get_obj_read(struct ib_uobject *uobj)
|
||||
((struct ib_##_object *)_uobj_get_obj_read( \
|
||||
uobj_get_read(_type, _id, _attrs)))
|
||||
|
||||
struct ib_uobject *_uobj_get_write(enum uverbs_default_objects type,
|
||||
u32 object_id,
|
||||
struct uverbs_attr_bundle *attrs);
|
||||
|
||||
#define uobj_get_write(_type, _id, _attrs) \
|
||||
rdma_lookup_get_uobject(uobj_get_type(_attrs, _type), (_attrs)->ufile, \
|
||||
_uobj_check_id(_id), UVERBS_LOOKUP_WRITE)
|
||||
_uobj_get_write(_type, _uobj_check_id(_id), _attrs)
|
||||
|
||||
int __uobj_perform_destroy(const struct uverbs_api_object *obj, u32 id,
|
||||
const struct uverbs_attr_bundle *attrs);
|
||||
@@ -123,8 +129,10 @@ __uobj_alloc(const struct uverbs_api_object *obj,
|
||||
{
|
||||
struct ib_uobject *uobj = rdma_alloc_begin_uobject(obj, attrs->ufile);
|
||||
|
||||
if (!IS_ERR(uobj))
|
||||
if (!IS_ERR(uobj)) {
|
||||
*ib_dev = uobj->context->device;
|
||||
attrs->context = uobj->context;
|
||||
}
|
||||
return uobj;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user