linux/drivers/infiniband/core
Yishai Hadas 1c77483e4c IB: Improve uverbs_cleanup_ucontext algorithm
Improve uverbs_cleanup_ucontext algorithm to work properly when the
topology graph of the objects cannot be determined at compile time.  This
is the case with objects created via the devx interface in mlx5.

Typically uverbs objects must be created in a strict topologically sorted
order, so that LIFO ordering will generally cause them to be freed
properly. There are only a few cases (eg memory windows) where objects can
point to things out of the strict LIFO order.

Instead of using an explicit ordering scheme where the HW destroy is not
allowed to fail, go over the list multiple times and allow the destroy
function to fail. If progress halts then a final, desperate, cleanup is
done before leaking the memory. This indicates a driver bug.

Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2018-06-29 14:35:46 -06:00
..
addr.c IB/cm: Remove now useless rcu_lock in dst_fetch_ha 2018-06-29 11:45:50 -06:00
agent.c
agent.h
cache.c RDMA/core: Remove unused ib cache functions 2018-06-25 14:19:57 -06:00
cgroup.c
cm.c IB/cm: Use sgid_attr from the AV 2018-06-25 14:19:57 -06:00
cm_msgs.h
cma.c IB/cm: Replace members of sa_path_rec with 'struct sgid_attr *' 2018-06-25 14:19:57 -06:00
cma_configfs.c IB/cma: use strlcpy() instead of strncpy() 2018-01-15 15:33:21 -07:00
cma_priv.h RDMA/cma: Move rdma_cm_state to cma_priv.h 2018-03-29 13:54:21 -06:00
core_priv.h RDMA/core: Remove indirection through ib_cache_setup() 2018-05-29 15:19:31 -06:00
cq.c RDMA/core: Reduce poll batch for direct cq polling 2018-03-06 20:08:39 -07:00
device.c IB: Replace ib_query_gid/ib_get_cached_gid with rdma_query_gid 2018-06-18 11:09:05 -06:00
fmr_pool.c treewide: kmalloc() -> kmalloc_array() 2018-06-12 16:19:22 -07:00
iwcm.c RDMA/netlink: Fix general protection fault 2017-12-07 15:28:07 -05:00
iwcm.h
iwpm_msg.c RDMA/iwpm: Properly mark end of NL messages 2017-09-29 11:32:42 -04:00
iwpm_util.c treewide: kzalloc() -> kcalloc() 2018-06-12 16:19:22 -07:00
iwpm_util.h
mad.c IB/mad: Use IDR for agent IDs 2018-06-18 11:22:54 -06:00
mad_priv.h IB/mad: Use IDR for agent IDs 2018-06-18 11:22:54 -06:00
mad_rmpp.c IB/mad: Change slid in RMPP recv from 16 to 32 bits 2017-08-08 14:47:18 -04:00
mad_rmpp.h
Makefile Verbs flow counters support 2018-06-04 08:48:11 -06:00
mr_pool.c
multicast.c IB: Make ib_init_ah_from_mcmember set sgid_attr 2018-06-25 14:19:56 -06:00
netlink.c RDMA/netlink: Simplify code of autoload modules 2018-01-02 13:36:57 -07:00
nldev.c RDMA/nldev: Return port capability flag for IB only 2018-06-18 11:09:05 -06:00
opa_smi.h
packer.c
rdma_core.c IB: Improve uverbs_cleanup_ucontext algorithm 2018-06-29 14:35:46 -06:00
rdma_core.h IB/uverbs: Refactor uverbs_finalize_objects 2018-06-19 10:53:02 -06:00
restrack.c RDMA/restrack: Change SPDX tag to properly reflect license 2018-06-05 14:04:20 -06:00
roce_gid_mgmt.c IB/core: Remove duplicate declaration of gid_cache_wq 2018-05-24 09:39:25 -06:00
rw.c IB/core: remove redundant check on prot_sg_cnt 2017-10-10 10:49:45 -04:00
sa.h
sa_query.c IB/cm: Replace members of sa_path_rec with 'struct sgid_attr *' 2018-06-25 14:19:57 -06:00
security.c IB/core: Use CONFIG_SECURITY_INFINIBAND to compile out security code 2018-05-01 11:16:36 -04:00
smi.c
smi.h
sysfs.c IB/core: Replace ib_query_gid with rdma_get_gid_attr 2018-06-18 11:09:05 -06:00
ucm.c RDMA: Use u64_to_user_ptr everywhere 2018-03-29 13:42:29 -06:00
ucma.c infiniband: fix a possible use-after-free bug 2018-06-04 09:37:03 -06:00
ud_header.c
umem.c RDMA/umem: Don't check for a negative return value of dma_map_sg_attrs() 2018-06-26 14:37:26 -06:00
umem_odp.c treewide: Use array_size() in vzalloc() 2018-06-12 16:19:22 -07:00
user_mad.c IB: Make ib_init_ah_attr_from_wc set sgid_attr 2018-06-25 14:19:56 -06:00
uverbs.h IB: Improve uverbs_cleanup_ucontext algorithm 2018-06-29 14:35:46 -06:00
uverbs_cmd.c IB: Improve uverbs_cleanup_ucontext algorithm 2018-06-29 14:35:46 -06:00
uverbs_ioctl.c IB/uverbs: Delete type and id from uverbs_obj_attr 2018-06-22 09:02:59 -06:00
uverbs_ioctl_merge.c treewide: Use struct_size() for kmalloc()-family 2018-06-06 11:15:43 -07:00
uverbs_main.c IB/core: Expose ib_ucontext from a given ib_uverbs_file 2018-06-19 10:53:02 -06:00
uverbs_marshall.c IB/cm: Replace members of sa_path_rec with 'struct sgid_attr *' 2018-06-25 14:19:57 -06:00
uverbs_std_types.c IB: Improve uverbs_cleanup_ucontext algorithm 2018-06-29 14:35:46 -06:00
uverbs_std_types_counters.c IB: Improve uverbs_cleanup_ucontext algorithm 2018-06-29 14:35:46 -06:00
uverbs_std_types_cq.c IB: Improve uverbs_cleanup_ucontext algorithm 2018-06-29 14:35:46 -06:00
uverbs_std_types_dm.c IB: Improve uverbs_cleanup_ucontext algorithm 2018-06-29 14:35:46 -06:00
uverbs_std_types_flow_action.c IB: Improve uverbs_cleanup_ucontext algorithm 2018-06-29 14:35:46 -06:00
uverbs_std_types_mr.c IB: Improve uverbs_cleanup_ucontext algorithm 2018-06-29 14:35:46 -06:00
verbs.c IB/core: Check for rdma_protocol_ib only after validating port_num 2018-06-27 15:05:58 -06:00