RDMA: Restore ability to fail on AH destroy
Like any other IB verbs objects, AH are refcounted by ib_core. The release
of those objects are controlled by ib_core with promise that AH destroy
can't fail.
Being SW object for now, this change makes dealloc_ah() to behave like any
other destroy IB flows.
Fixes: d345691471
("RDMA: Handle AH allocations by IB/core")
Link: https://lore.kernel.org/r/20200907120921.476363-3-leon@kernel.org
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
This commit is contained in:

committed by
Jason Gunthorpe

parent
91a7c58fce
commit
9a9ebf8cd7
@@ -2403,7 +2403,7 @@ struct ib_device_ops {
|
||||
struct ib_udata *udata);
|
||||
int (*modify_ah)(struct ib_ah *ah, struct rdma_ah_attr *ah_attr);
|
||||
int (*query_ah)(struct ib_ah *ah, struct rdma_ah_attr *ah_attr);
|
||||
void (*destroy_ah)(struct ib_ah *ah, u32 flags);
|
||||
int (*destroy_ah)(struct ib_ah *ah, u32 flags);
|
||||
int (*create_srq)(struct ib_srq *srq,
|
||||
struct ib_srq_init_attr *srq_init_attr,
|
||||
struct ib_udata *udata);
|
||||
@@ -3596,9 +3596,11 @@ int rdma_destroy_ah_user(struct ib_ah *ah, u32 flags, struct ib_udata *udata);
|
||||
*
|
||||
* NOTE: for user ah use rdma_destroy_ah_user with valid udata!
|
||||
*/
|
||||
static inline int rdma_destroy_ah(struct ib_ah *ah, u32 flags)
|
||||
static inline void rdma_destroy_ah(struct ib_ah *ah, u32 flags)
|
||||
{
|
||||
return rdma_destroy_ah_user(ah, flags, NULL);
|
||||
int ret = rdma_destroy_ah_user(ah, flags, NULL);
|
||||
|
||||
WARN_ONCE(ret, "Destroy of kernel AH shouldn't fail");
|
||||
}
|
||||
|
||||
struct ib_srq *ib_create_srq_user(struct ib_pd *pd,
|
||||
|
Reference in New Issue
Block a user