Michael> cm_deref_id does nothing outside the lock.

But you could still have:

/* Make sure cm_deref_id is not in progress */
spin_lock_irq(&cm_id_priv->lock);
spin_unlock_irq(&cm_id_priv->lock);

                                spin_lock_irqsave(&cm_id_priv->lock, flags);
                                if (atomic_dec_and_test(&cm_id_priv->refcount))

wait_event(cm_id_priv->wait, !atomic_read(&cm_id_priv->refcount));

while ((work = cm_dequeue_work(cm_id_priv)) != NULL)
        cm_free_work(work);
kfree(cm_id_priv->compare_data);

                                        wake_up(&cm_id_priv->wait);
                                spin_unlock_irqrestore(&cm_id_priv->lock, 
flags);

 - R.
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

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

Reply via email to