IB: Pass uverbs_attr_bundle down ib_x destroy path
The uverbs_attr_bundle with the ucontext is sent down to the drivers ib_x destroy path as ib_udata. The next patch will use the ib_udata to free the drivers destroy path from the dependency in 'uobject->context' as we already did for the create path. Signed-off-by: Shamir Rabinovitch <shamir.rabinovitch@oracle.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
这个提交包含在:
@@ -461,7 +461,7 @@ int usnic_ib_alloc_pd(struct ib_pd *ibpd, struct ib_ucontext *context,
|
||||
return 0;
|
||||
}
|
||||
|
||||
void usnic_ib_dealloc_pd(struct ib_pd *pd)
|
||||
void usnic_ib_dealloc_pd(struct ib_pd *pd, struct ib_udata *udata)
|
||||
{
|
||||
usnic_uiom_dealloc_pd((to_upd(pd))->umem_pd);
|
||||
}
|
||||
@@ -539,7 +539,7 @@ out_release_mutex:
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
int usnic_ib_destroy_qp(struct ib_qp *qp)
|
||||
int usnic_ib_destroy_qp(struct ib_qp *qp, struct ib_udata *udata)
|
||||
{
|
||||
struct usnic_ib_qp_grp *qp_grp;
|
||||
struct usnic_ib_vf *vf;
|
||||
@@ -606,7 +606,7 @@ struct ib_cq *usnic_ib_create_cq(struct ib_device *ibdev,
|
||||
return cq;
|
||||
}
|
||||
|
||||
int usnic_ib_destroy_cq(struct ib_cq *cq)
|
||||
int usnic_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata)
|
||||
{
|
||||
usnic_dbg("\n");
|
||||
kfree(cq);
|
||||
@@ -642,7 +642,7 @@ err_free:
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
int usnic_ib_dereg_mr(struct ib_mr *ibmr)
|
||||
int usnic_ib_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata)
|
||||
{
|
||||
struct usnic_ib_mr *mr = to_umr(ibmr);
|
||||
|
||||
@@ -731,4 +731,3 @@ int usnic_ib_mmap(struct ib_ucontext *context,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/* End of ib callbacks section */
|
||||
|
@@ -52,22 +52,22 @@ int usnic_ib_query_pkey(struct ib_device *ibdev, u8 port, u16 index,
|
||||
u16 *pkey);
|
||||
int usnic_ib_alloc_pd(struct ib_pd *ibpd, struct ib_ucontext *context,
|
||||
struct ib_udata *udata);
|
||||
void usnic_ib_dealloc_pd(struct ib_pd *pd);
|
||||
void usnic_ib_dealloc_pd(struct ib_pd *pd, struct ib_udata *udata);
|
||||
struct ib_qp *usnic_ib_create_qp(struct ib_pd *pd,
|
||||
struct ib_qp_init_attr *init_attr,
|
||||
struct ib_udata *udata);
|
||||
int usnic_ib_destroy_qp(struct ib_qp *qp);
|
||||
int usnic_ib_destroy_qp(struct ib_qp *qp, struct ib_udata *udata);
|
||||
int usnic_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
|
||||
int attr_mask, struct ib_udata *udata);
|
||||
struct ib_cq *usnic_ib_create_cq(struct ib_device *ibdev,
|
||||
const struct ib_cq_init_attr *attr,
|
||||
struct ib_ucontext *context,
|
||||
struct ib_udata *udata);
|
||||
int usnic_ib_destroy_cq(struct ib_cq *cq);
|
||||
int usnic_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata);
|
||||
struct ib_mr *usnic_ib_reg_mr(struct ib_pd *pd, u64 start, u64 length,
|
||||
u64 virt_addr, int access_flags,
|
||||
struct ib_udata *udata);
|
||||
int usnic_ib_dereg_mr(struct ib_mr *ibmr);
|
||||
int usnic_ib_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata);
|
||||
int usnic_ib_alloc_ucontext(struct ib_ucontext *uctx, struct ib_udata *udata);
|
||||
void usnic_ib_dealloc_ucontext(struct ib_ucontext *ibcontext);
|
||||
int usnic_ib_mmap(struct ib_ucontext *context,
|
||||
|
在新工单中引用
屏蔽一个用户