diff -ruNp org/drivers/infiniband/core/cma.c new/drivers/infiniband/core/cma.c
--- org/drivers/infiniband/core/cma.c   2006-10-09 16:40:04.000000000 +0530
+++ new/drivers/infiniband/core/cma.c   2006-10-09 16:52:03.000000000 +0530
@@ -1276,14 +1276,12 @@ static void cma_work_handler(void *data)
        int destroy = 0;
 
        atomic_inc(&id_priv->dev_remove);
-       if (!cma_comp_exch(id_priv, work->old_state, work->new_state))
-               goto out;
-
-       if (id_priv->id.event_handler(&id_priv->id, &work->event)) {
-               cma_exch(id_priv, CMA_DESTROYING);
-               destroy = 1;
+       if (cma_comp_exch(id_priv, work->old_state, work->new_state)) {
+               if (id_priv->id.event_handler(&id_priv->id, &work->event)) {
+                       cma_exch(id_priv, CMA_DESTROYING);
+                       destroy = 1;
+               }
        }
-out:
        cma_release_remove(id_priv);
        cma_deref_id(id_priv);
        if (destroy)

_______________________________________________
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to