linux/drivers/infiniband
Jason Gunthorpe c561c28846 IB/uverbs: Clarify the kref'ing ordering for alloc_commit
The alloc_commit callback makes the uobj visible to other threads,
and it does so using a 'move' semantic of the uobj kref on the stack
into the public storage (eg the IDR, uobject list and file_private_data)

Once this is done another thread could start up and trigger deletion
of the kref. Fortunately cleanup_rwsem happens to prevent this from
being a bug, but that is a fantastically unclear side effect.

Re-organize things so that alloc_commit is that last thing to touch
the uobj, get rid of the sneaky implicit dependency on cleanup_rwsem,
and add a comment reminding that uobj is no longer kref'd after
alloc_commit.

Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2018-07-25 14:21:21 -06:00
..
core IB/uverbs: Clarify the kref'ing ordering for alloc_commit 2018-07-25 14:21:21 -06:00
hw IB/mlx5: Enable driver uapi commands for flow steering 2018-07-24 14:33:52 -06:00
sw IB/rxe: Drop QP0 silently 2018-07-24 15:28:31 -06:00
ulp IB/srpt: Simplify ib_post_(send|recv|srq_recv)() calls 2018-07-24 16:06:36 -06:00
Kconfig RDMA/ucm: Mark UCM interface as BROKEN 2018-05-24 09:39:25 -06:00
Makefile