HomeFreeBSD

ibcore: Fix a race with disassociate and exit_mmap()

Description

ibcore: Fix a race with disassociate and exit_mmap()

If uverbs_user_mmap_disassociate() is called while the mmap is
concurrently doing exit_mmap then the ordering of the
rdma_user_mmap_entry_put() is not reliable.

The put must be done before uvers_user_mmap_disassociate() returns,
otherwise there can be a use after free on the ucontext, and a left over
entry in the xarray. If the put is not done here then it is done during
rdma_umap_close() later.

Add the missing put to the error exit path.

Linux commit:
39c011a538272589b9eb02ff1228af528522a22c

PR: 264473
MFC after: 3 days
Sponsored by: NVIDIA Networking

Details

Provenance
hselaskyAuthored on Jun 21 2022, 9:23 AM
Parents
rG55d183367104: ibcore: Fix sysfs registration error flow
Branches
Unknown
Tags
Unknown