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:
Родитель
1e857e65d4
Коммит
cc2e14e680
|
@ -449,6 +449,17 @@ struct ib_uobject *rdma_lookup_get_uobject(const struct uverbs_obj_type *type,
|
|||
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);
|
||||
if (ret)
|
||||
goto free;
|
||||
|
|
Загрузка…
Ссылка в новой задаче