ucma_destroy_cqs() destroys both the send and recv CQs if they
are non-null. If the two CQs are actually the same one, this
results in a crash when trying to destroy the second CQ. Check
that the CQs are different before destroying the second CQ.
This fixes a crash when using rsockets, which sets the send and
recv CQs to the same CQ.
Signed-off-by: Sean Hefty <sean.hefty@intel.com>
if (id->recv_cq_channel)
ibv_destroy_comp_channel(id->recv_cq_channel);
- if (id->send_cq)
+ if (id->send_cq && (id->send_cq != id->recv_cq))
ibv_destroy_cq(id->send_cq);
- if (id->send_cq_channel)
+ if (id->send_cq_channel && (id->send_cq_channel != id->recv_cq_channel))
ibv_destroy_comp_channel(id->send_cq_channel);
}