svn commit: r303513 - head/sys/ofed/drivers/infiniband/ulp/sdp
Mark Johnston
markj at FreeBSD.org
Fri Jul 29 21:03:03 UTC 2016
Author: markj
Date: Fri Jul 29 21:03:02 2016
New Revision: 303513
URL: https://svnweb.freebsd.org/changeset/base/303513
Log:
sdp: Destroy the RDMA ID after destroying the connection's queue pair.
This is the ordering documented by rdma_destroy_qp(). Also add a useful
KASSERT to sdp_pcbfree().
Sponsored by: EMC / Isilon Storage Division
Modified:
head/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
Modified: head/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c
==============================================================================
--- head/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c Fri Jul 29 21:01:04 2016 (r303512)
+++ head/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c Fri Jul 29 21:03:02 2016 (r303513)
@@ -160,7 +160,10 @@ sdp_pcbbind(struct sdp_sock *ssk, struct
static void
sdp_pcbfree(struct sdp_sock *ssk)
{
+
KASSERT(ssk->socket == NULL, ("ssk %p socket still attached", ssk));
+ KASSERT((ssk->flags & SDP_DESTROY) == 0,
+ ("ssk %p already destroyed", ssk));
sdp_dbg(ssk->socket, "Freeing pcb");
SDP_WLOCK_ASSERT(ssk);
@@ -171,7 +174,6 @@ sdp_pcbfree(struct sdp_sock *ssk)
LIST_REMOVE(ssk, list);
SDP_LIST_WUNLOCK();
crfree(ssk->cred);
- sdp_destroy_cma(ssk);
ssk->qp_active = 0;
if (ssk->qp) {
ib_destroy_qp(ssk->qp);
@@ -179,6 +181,7 @@ sdp_pcbfree(struct sdp_sock *ssk)
}
sdp_tx_ring_destroy(ssk);
sdp_rx_ring_destroy(ssk);
+ sdp_destroy_cma(ssk);
rw_destroy(&ssk->rx_ring.destroyed_lock);
rw_destroy(&ssk->lock);
uma_zfree(sdp_zone, ssk);
More information about the svn-src-all
mailing list