Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 450d06c0 authored by Sherman Pun's avatar Sherman Pun Committed by David S. Miller
Browse files

RDS: Properly unmap when getting a remote access error



If the RDMA op has aborted with a remote access error,
in addition to what we already do (tell userspace it has
completed with an error) also unmap it and put() the rm.

Otherwise, hangs may occur on arches that track maps and
will not exit without proper cleanup.

Signed-off-by: default avatarAndy Grover <andy.grover@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent b98ba52f
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -243,8 +243,12 @@ void rds_ib_send_cq_comp_handler(struct ib_cq *cq, void *context)
				struct rds_message *rm;

				rm = rds_send_get_message(conn, send->s_op);
				if (rm)
				if (rm) {
					if (rm->m_rdma_op)
						rds_ib_send_unmap_rdma(ic, rm->m_rdma_op);
					rds_ib_send_rdma_complete(rm, wc.status);
					rds_message_put(rm);
				}
			}

			oldest = (oldest + 1) % ic->i_send_ring.w_nr;