Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cc2e14e6 authored by Jason Gunthorpe's avatar Jason Gunthorpe
Browse files

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: default avatarJason Gunthorpe <jgg@mellanox.com>
parent 1e857e65
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -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;