linux/drivers/infiniband/sw/rxe
Chuck Lever b024dd0eba rxe: IB_WR_REG_MR does not capture MR's iova field
FRWR memory registration is done with a series of calls and WRs.
1. ULP invokes ib_dma_map_sg()
2. ULP invokes ib_map_mr_sg()
3. ULP posts an IB_WR_REG_MR on the Send queue

Step 2 generates an iova. It is permissible for ULPs to change this
iova (with certain restrictions) between steps 2 and 3.

rxe_map_mr_sg captures the MR's iova but later when rxe processes the
REG_MR WR, it ignores the MR's iova field. If a ULP alters the MR's iova
after step 2 but before step 3, rxe never captures that change.

When the remote sends an RDMA Read targeting that MR, rxe looks up the
R_key, but the altered iova does not match the iova stored in the MR,
causing the RDMA Read request to fail.

Reported-by: Anna Schumaker <schumaker.anna@gmail.com>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
2018-11-29 17:10:06 -07:00
..
Kconfig IB: Fix RDMA_RXE and INFINIBAND_RDMAVT dependencies for DMA_VIRT_OPS 2018-05-15 10:48:16 -04:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
rxe_av.c RDMA: Convert drivers to use sgid_attr instead of sgid_index 2018-06-18 11:11:26 -06:00
rxe_comp.c RDMA/rxe: Add link_down, rdma_sends, rdma_recvs stats counters 2018-11-08 14:22:54 -07:00
rxe_cq.c IB/rxe: replace kvfree with vfree 2018-09-30 19:20:38 -06:00
rxe_hdr.h IB/rxe: Enable type checking on SKB_TO_PKT() and PKT_TO_SKB() arguments 2017-01-10 16:52:47 -05:00
rxe_hw_counters.c RDMA/rxe: Add link_down, rdma_sends, rdma_recvs stats counters 2018-11-08 14:22:54 -07:00
rxe_hw_counters.h RDMA/rxe: Add link_down, rdma_sends, rdma_recvs stats counters 2018-11-08 14:22:54 -07:00
rxe_icrc.c IB/rxe: Offload CRC calculation when possible 2017-04-21 10:45:02 -04:00
rxe_loc.h IB/rxe: move the variable into the function that uses it 2018-11-08 14:22:54 -07:00
rxe_mcast.c IB/rxe: Remove a pointless indirection layer 2017-01-10 16:52:47 -05:00
rxe_mmap.c IB/rxe: Constify static rxe_vm_ops 2017-07-24 08:43:12 -04:00
rxe_mr.c IB/rxe: Refactor lookup memory function 2018-08-30 16:31:50 -04:00
rxe_net.c RDMA/rxe: Add link_down, rdma_sends, rdma_recvs stats counters 2018-11-08 14:22:54 -07:00
rxe_net.h IB/rxe: make rxe_release_udp_tunnel static 2018-04-19 13:58:04 -04:00
rxe_opcode.c IB/rxe: add RXE_START_MASK for rxe_opcode IB_OPCODE_RC_SEND_ONLY_INV 2018-04-27 14:20:47 -04:00
rxe_opcode.h
rxe_param.h IB/rxe: Remove unnecessary enum values 2018-10-17 00:28:51 -06:00
rxe_pool.c IB/rxe: Avoid NULL check when search is successful 2018-08-30 16:31:50 -04:00
rxe_pool.h IB/rxe: Change pool state enums to capital letters 2018-08-30 16:31:50 -04:00
rxe_qp.c RDMA: Remove unused parameter from ib_modify_qp_is_ok() 2018-10-03 16:05:46 -06:00
rxe_queue.c RDMA/rxe: Use structs to describe the uABI instead of opencoding 2018-03-15 15:58:02 -06:00
rxe_queue.h RDMA/rxe: Use structs to describe the uABI instead of opencoding 2018-03-15 15:58:02 -06:00
rxe_recv.c IB/rxe: remove redudant qpn check 2018-08-30 16:31:50 -04:00
rxe_req.c rxe: IB_WR_REG_MR does not capture MR's iova field 2018-11-29 17:10:06 -07:00
rxe_resp.c IB/rxe: move the variable into the function that uses it 2018-11-08 14:22:54 -07:00
rxe_srq.c IB/rxe: avoid srq memory leak 2018-10-03 16:03:36 -06:00
rxe_sysfs.c RDMA/drivers: Use dev_err/dbg/etc instead of pr_* + ibdev->name 2018-09-26 13:51:48 -06:00
rxe_task.c RDMA/rxe: Suppress gcc 7 fall-through complaints 2017-10-14 20:47:07 -04:00
rxe_task.h IB/rxe: Wait for tasklets to finish before tearing down QP 2016-12-12 16:31:45 -05:00
rxe_verbs.c IB/rxe: make rxe_unregister_device void 2018-11-08 14:22:54 -07:00
rxe_verbs.h IB/rxe: make rxe_unregister_device void 2018-11-08 14:22:54 -07:00
rxe.c IB/rxe: Remove unnecessary enum values 2018-10-17 00:28:51 -06:00
rxe.h RDMA/rxe: Distinguish between down links and disabled links 2018-11-08 14:22:53 -07:00