Jason Gunthorpe
22fa27fbc6
IB/uverbs: Fix locking around struct ib_uverbs_file ucontext
...
We have a parallel unlocked reader and writer with ib_uverbs_get_context()
vs everything else, and nothing guarantees this works properly.
Audit and fix all of the places that access ucontext to use one of the
following locking schemes:
- Call ib_uverbs_get_ucontext() under SRCU and check for failure
- Access the ucontext through an struct ib_uobject context member
while holding a READ or WRITE lock on the uobject.
This value cannot be NULL and has no race.
- Hold the ucontext_lock and check for ufile->ucontext !NULL
This also re-implements ib_uverbs_get_ucontext() in a way that is safe
against concurrent ib_uverbs_get_context() and disassociation.
As a side effect, every access to ucontext in the commands is via
ib_uverbs_get_context() with an error check, or via the uobject, so there
is no longer any need for the core code to check ucontext on every command
call. These checks are also removed.
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2018-07-25 14:21:46 -06:00
..
ib.h
new helper: uaccess_kernel()
2017-03-28 16:43:25 -04:00
ib_addr.h
IB/cm: Keep track of the sgid_attr that created the cm id
2018-06-25 14:19:56 -06:00
ib_cache.h
RDMA/core: Remove unused ib cache functions
2018-06-25 14:19:57 -06:00
ib_cm.h
IB/cm: Pass the sgid_attr through various events
2018-06-25 14:19:57 -06:00
ib_fmr_pool.h
RDMA: Improve include file coding style
2008-07-14 23:48:44 -07:00
ib_hdrs.h
IB/hfi1: Remove unnecessary fecn and becn fields
2018-02-01 15:43:29 -07:00
ib_mad.h
RDMA: Fix storage of PortInfo CapabilityMask in the kernel
2018-07-10 11:06:45 -06:00
ib_marshall.h
IB/core: Convert ah_attr from OPA to IB when copying to user
2017-08-08 14:47:18 -04:00
ib_pack.h
IB/core: Fix calculation of maximum RoCE MTU
2017-10-18 12:11:36 -04:00
ib_pma.h
IB/core: Display extended counter set if available
2015-12-23 15:58:30 -05:00
ib_sa.h
IB/cm: Replace members of sa_path_rec with 'struct sgid_attr *'
2018-06-25 14:19:57 -06:00
ib_smi.h
IB/core: Move SM class defines from ib_mad.h to ib_smi.h
2015-09-03 15:50:32 -04:00
ib_umem.h
IB/umem: Use the correct mm during ib_umem_release
2018-05-15 17:09:10 -06:00
ib_umem_odp.h
RDMA/umem: Avoid partial declaration of non-static function
2017-11-10 13:02:12 -05:00
ib_verbs.h
IB/uverbs: Rework the locking for cleaning up the ucontext
2018-07-25 14:21:22 -06:00
iw_cm.h
rdma_cm: add rdma_reject_msg() helper function
2016-12-14 11:38:28 -05:00
iw_portmap.h
RDMA/core: Enable the iWarp Port Mapper to provide the actual address of the connecting peer to its clients
2015-05-05 09:18:01 -04:00
mr_pool.h
IB/core: add a simple MR pool
2016-05-13 13:37:18 -04:00
opa_addr.h
include/rdma/opa_addr.h: Fix an endianness issue
2018-07-03 14:11:34 -06:00
opa_port_info.h
IB/hfi1: Virtual Network Interface Controller (VNIC) HW support
2017-04-20 15:19:35 -04:00
opa_smi.h
IB/mad: Eliminate redundant SM class version defines for OPA
2016-12-14 11:01:58 -05:00
opa_vnic.h
IB/hfi1: Add support to receive 16B bypass packets
2017-08-22 14:22:37 -04:00
rdma_cm.h
RDMA/CMA: add rdma_iw_cm_id() and rdma_res_to_id() helpers
2018-05-22 14:32:30 -04:00
rdma_cm_ib.h
RDMA/{cma, ucma}: Simplify and rename rdma_set_ib_paths
2018-01-10 22:00:33 -07:00
rdma_netlink.h
License cleanup: add SPDX GPL-2.0 license identifier to files with no license
2017-11-02 11:10:55 +01:00
rdma_vt.h
IB/{hfi1, rdmavt, qib}: Implement CQ completion vector support
2018-05-09 15:53:30 -04:00
rdmavt_cq.h
IB/{hfi1, rdmavt, qib}: Implement CQ completion vector support
2018-05-09 15:53:30 -04:00
rdmavt_mr.h
IB/rdmavt: Handle dereg of inuse MRs properly
2017-08-28 19:12:31 -04:00
rdmavt_qp.h
IB/rdmavt, IB/hfi1: Create device dependent s_flags
2018-06-19 11:49:46 -06:00
restrack.h
RDMA/restrack: Change SPDX tag to properly reflect license
2018-06-05 14:04:20 -06:00
rw.h
rdma core: Add rdma_rw_mr_payload()
2017-09-05 15:15:30 -04:00
uverbs_ioctl.h
IB/uverbs: Fix locking around struct ib_uverbs_file ucontext
2018-07-25 14:21:46 -06:00
uverbs_named_ioctl.h
IB/mlx5: Introduce driver create and destroy flow methods
2018-07-24 14:03:49 -06:00
uverbs_std_types.h
IB/uverbs: Always propagate errors from rdma_alloc_commit_uobject()
2018-07-25 14:21:22 -06:00
uverbs_types.h
IB/uverbs: Move the FD uobj type struct file allocation to alloc_commit
2018-07-25 14:21:22 -06:00