Jason Gunthorpe 0ac8903cbb RDMA/core: Allow the ioctl layer to abort a fully created uobject
While creating a uobject every create reaches a point where the uobject is
fully initialized. For ioctls that go on to copy_to_user this means they
need to open code the destruction of a fully created uobject - ie the
RDMA_REMOVE_DESTROY sort of flow.

Open coding this creates bugs, eg the CQ does not properly flush the
events list when it does its error unwind.

Provide a uverbs_finalize_uobj_create() function which indicates that the
uobject is fully initialized and that abort should call to destroy_hw to
destroy the uobj->object and related.

Methods can call this function if they go on to have error cases after
setting uobj->object. Once done those error cases can simply do return,
without an error unwind.

Link: https://lore.kernel.org/r/20200519072711.257271-2-leon@kernel.org
Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2020-05-21 20:10:46 -03:00
..
2020-03-23 07:59:38 +01:00
2020-05-21 17:08:27 -03:00
2020-04-10 11:32:22 +02:00
2020-04-27 13:28:27 -07:00
2020-04-04 18:07:59 -07:00
2020-04-16 13:52:31 -07:00
2020-03-30 11:43:51 -07:00
2020-03-19 23:04:32 -05:00
2020-04-03 15:05:35 -07:00
2020-05-21 17:08:27 -03:00
2020-04-03 14:25:02 -07:00
2020-04-08 21:03:40 -07:00
2020-03-31 10:05:01 -07:00
2020-04-23 09:28:15 -07:00
2020-04-17 06:05:29 -04:00
2020-04-07 19:48:52 -07:00
2020-04-21 14:21:20 +02:00
2020-04-02 15:50:04 -07:00
2020-04-03 15:05:35 -07:00
2020-05-08 08:56:16 -07:00
2020-04-20 10:19:22 -04:00
2020-04-07 20:24:34 -07:00
2020-03-19 07:41:03 +01:00
2020-04-17 10:35:17 -07:00
2020-04-03 13:12:26 -07:00
2020-04-08 10:51:53 -07:00
2020-04-08 10:51:53 -07:00