IB/uverbs: Lower the test for ongoing disassociation
Commands that are reading/writing to objects can test for an ongoing disassociation during their initial call to rdma_lookup_get_uobject. This directly prevents all of these commands from conflicting with an ongoing disassociation. Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
1e857e65d4
commit
cc2e14e680
@ -449,6 +449,17 @@ struct ib_uobject *rdma_lookup_get_uobject(const struct uverbs_obj_type *type,
|
|||||||
goto free;
|
goto free;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If we have been disassociated block every command except for
|
||||||
|
* DESTROY based commands.
|
||||||
|
*/
|
||||||
|
if (mode != UVERBS_LOOKUP_DESTROY &&
|
||||||
|
!srcu_dereference(ufile->device->ib_dev,
|
||||||
|
&ufile->device->disassociate_srcu)) {
|
||||||
|
ret = -EIO;
|
||||||
|
goto free;
|
||||||
|
}
|
||||||
|
|
||||||
ret = uverbs_try_lock_object(uobj, mode);
|
ret = uverbs_try_lock_object(uobj, mode);
|
||||||
if (ret)
|
if (ret)
|
||||||
goto free;
|
goto free;
|
||||||
|
Loading…
Reference in New Issue
Block a user