linux/drivers/infiniband/core
Mark Zhang 7345201c39 IB/cm: Improve the calling of cm_init_av_for_lap and cm_init_av_by_path
The cm_init_av_for_lap() and cm_init_av_by_path() function calls have the
following issues:

1. Both of them might sleep and should not be called under spinlock.
2. The access of cm_id_priv->av should be under cm_id_priv->lock, which
   means it can't be initialized directly.

This patch splits the calling of 2 functions into two parts: first one
initializes an AV outside of the spinlock, the second one copies AV to
cm_id_priv->av under spinlock.

Fixes: e1444b5a16 ("IB/cm: Fix automatic path migration support")
Link: https://lore.kernel.org/r/038fb8ad932869b4548b0c7708cab7f76af06f18.1622629024.git.leonro@nvidia.com
Signed-off-by: Mark Zhang <markzhang@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
2021-06-02 15:41:58 -03:00
..
addr.c RDMA/addr: Be strict with gid size 2021-04-08 16:14:56 -03:00
agent.c RDMA: Mark if destroy address handle is in a sleepable context 2018-12-19 16:28:03 -07:00
agent.h
cache.c IB/core: Only update PKEY and GID caches on respective events 2021-05-28 20:26:16 -03:00
cgroup.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 288 2019-06-05 17:36:37 +02:00
cm_msgs.h RDMA/core: Add necessary spaces 2021-04-12 14:52:22 -03:00
cm_trace.c RDMA/cm: Replace pr_debug() call sites with tracepoints 2020-08-24 19:41:41 -03:00
cm_trace.h RDMA/cm: Add tracepoints to track MAD send operations 2020-08-24 19:41:41 -03:00
cm.c IB/cm: Improve the calling of cm_init_av_for_lap and cm_init_av_by_path 2021-06-02 15:41:58 -03:00
cma_configfs.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
cma_priv.h IB/cma: Introduce rdma_set_min_rnr_timer() 2021-04-12 19:51:48 -03:00
cma_trace.c RDMA/cma: Add trace points in RDMA Connection Manager 2020-01-07 16:10:53 -04:00
cma_trace.h RDMA/core: Move the rdma_show_ib_cm_event() macro 2020-08-24 16:01:47 -03:00
cma.c RDMA/core: Add CM to restrack after successful attachment to a device 2021-04-21 20:53:14 -03:00
core_priv.h RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
counters.c RDMA/uverbs: Refactor rdma_counter_set_auto_mode and __counter_set_mode 2021-03-26 11:52:09 -03:00
cq.c RDMA/core: Clean up cq pool mechanism 2020-12-10 15:05:17 -04:00
device.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
ib_core_uverbs.c RDMA/core: Ensure that rdma_user_mmap_entry_remove() is a fence 2020-01-25 14:48:33 -04:00
iwcm.c RDMA/iwcm: Fix iwcm work deallocation 2020-03-04 14:28:25 -04:00
iwcm.h
iwpm_msg.c RDMA/core: Correct format of block comments 2021-04-12 14:56:51 -03:00
iwpm_util.c RDMA/core/iwpm_util: Fix some param description misspellings 2021-01-19 20:33:44 -04:00
iwpm_util.h IB: Fix kernel-doc markups 2020-12-07 15:45:00 -04:00
lag.c RDMA/core: Consider flow label when building skb 2020-05-06 16:51:43 -03:00
mad_priv.h IB/mad: Change atomics to refcount API 2020-06-24 16:43:45 -03:00
mad_rmpp.c RDMA/core: Remove redundant spaces 2021-04-12 14:56:48 -03:00
mad_rmpp.h
mad.c IB/cm: Simplify ib_cancel_mad() and ib_modify_mad() calls 2021-06-02 15:41:58 -03:00
Makefile RDMA/umem: Support importing dma-buf as user memory region 2021-01-20 16:07:52 -04:00
mr_pool.c Linux 5.2-rc6 2019-06-28 21:18:23 -03:00
multicast.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
netlink.c IB/core: Avoid deadlock during netlink message handling 2019-10-24 20:49:37 -03:00
nldev.c RDMA/nldev: Add copy-on-fork attribute to get sys command 2021-04-27 15:33:20 -03:00
opa_smi.h RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
packer.c
rdma_core.c RDMA/core: Correct misspellings of two words in comments 2021-03-26 11:58:26 -03:00
rdma_core.h IB/uverbs: Introduce create/destroy QP commands over ioctl 2020-05-21 20:39:36 -03:00
restrack.c RDMA/restrack: Add support to get resource tracking for SRQ 2021-04-22 10:30:27 -03:00
restrack.h RDMA/restrack: Improve readability in task name management 2020-09-22 19:47:35 -03:00
roce_gid_mgmt.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
rw.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
sa_query.c IB/cm: Simplify ib_cancel_mad() and ib_modify_mad() calls 2021-06-02 15:41:58 -03:00
sa.h RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
security.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
smi.c RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
smi.h RDMA: Support more than 255 rdma ports 2021-03-26 09:31:21 -03:00
sysfs.c RDMA/core: Correct format of braces 2021-04-12 14:56:51 -03:00
trace.c RDMA/core: Clean up tracepoint headers 2020-07-06 14:54:46 -03:00
ucma.c RDMA/core: Use the DEVICE_ATTR_RO macro 2021-05-28 20:39:51 -03:00
ud_header.c RDMA/core: Use sizeof_field() helper 2020-05-27 13:46:05 -03:00
umem_dmabuf.c RDMA/mlx5: Consolidate MR destruction to mlx5_ib_dereg_mr() 2021-03-11 20:03:25 -04:00
umem_odp.c IB/core: Enable ODP sync without faulting 2020-10-01 16:44:05 -03:00
umem.c RDMA merge window pull request 2021-05-01 09:15:05 -07:00
user_mad.c RDMA/core: Remove redundant spaces 2021-04-12 14:56:48 -03:00
uverbs_cmd.c RDMA/core: Sanitize WQ state received from the userspace 2021-06-02 15:20:11 -03:00
uverbs_ioctl.c IB/core: Split uverbs_get_const/default to consider target type 2021-03-11 20:20:36 -04:00
uverbs_main.c RDMA: Convert sysfs device * show functions to use sysfs_emit() 2020-10-26 19:53:21 -03: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_async_fd.c RDMA/core: Make FD destroy callback void 2020-11-12 12:32:17 -04:00
uverbs_std_types_counters.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types_cq.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types_device.c RDMA/uverbs: Fix incorrect variable type 2020-12-10 15:05:17 -04:00
uverbs_std_types_dm.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types_flow_action.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types_mr.c RDMA/uverbs: Add uverbs command for dma-buf based MR registration 2021-01-20 16:07:52 -04:00
uverbs_std_types_qp.c RDMA/restrack: Support all QP types 2020-11-27 11:38:46 -04:00
uverbs_std_types_srq.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types_wq.c RDMA/core: Postpone uobject cleanup on failure till FD close 2020-11-12 12:32:17 -04:00
uverbs_std_types.c RDMA/core: Make FD destroy callback void 2020-11-12 12:32:17 -04:00
uverbs_uapi.c RDMA/core Remove uverbs_ex_cmd_mask 2020-10-26 19:27:59 -03:00
uverbs.h IB/uverbs: Extend CQ to get its own asynchronous event FD 2020-05-21 20:34:53 -03:00
verbs.c RDMA/core: Remove never used ib_modify_wq function call 2021-05-11 14:43:58 -03:00