Found a problem in krping while testing a broken iwarp device.
Against git head.  Not exactly tested, but works on my hacked-up
older version of krping.

                -- Pete


Anytime after the server has received a CONNECT_REQUEST, the
child_cm_id exists and must be destroyed.  Fix error paths
to make sure this always happens, else the rdma_cm_id leaks
and devices can not be unloaded.

Signed-off-by: Pete Wyckoff <[EMAIL PROTECTED]>
---
 krping.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/krping.c b/krping.c
index d8fcdf2..4a6c382 100644
--- a/krping.c
+++ b/krping.c
@@ -1589,7 +1589,7 @@ static void krping_run_server(struct krping_cb *cb)
        ret = krping_setup_qp(cb, cb->child_cm_id);
        if (ret) {
                printk(KERN_ERR PFX "setup_qp failed: %d\n", ret);
-               return;
+               goto err0;
        }
 
        ret = krping_setup_buffers(cb);
@@ -1619,11 +1619,12 @@ static void krping_run_server(struct krping_cb *cb)
        else
                krping_test_server(cb);
        rdma_disconnect(cb->child_cm_id);
-       rdma_destroy_id(cb->child_cm_id);
 err2:
        krping_free_buffers(cb);
 err1:
        krping_free_qp(cb);
+err0:
+       rdma_destroy_id(cb->child_cm_id);
 }
 
 static void krping_test_client(struct krping_cb *cb)
-- 
1.5.5.1

_______________________________________________
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

Reply via email to