The two patches in this series fix a race condition between create_qp and destroy_qp which results in a newly-created QP not being found by xxx_find_qp during CQ polling.
The low-level create_qp and destroy_qp functions are not atomic WRT each other. If one thread is destroying a QP while another is creating a qp, there is a race hole. The destroying thread can lose its timesice after it has deleted the QP from kernel space, but before it has cleared it from userspace store (xxx_clear_qp). If the other thread creates a qp during this break, it gets the same QP base number and overwrites the destroyed QPs entry with xxx_store_qp(). When destroy_qp then deletes the qp number from the userspace store it deletes the newly-created qp number, resulting in that QP not being found in poll_cq. This patch series fixes Bugzilla 1389 for the libmlx4 and libmthca libraries. - Jack _______________________________________________ general mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
