[openib-general] [PATCH] ib_mad: In ib_mad_complete_recv, decrement agent refcount when not fully reassembled and when no request found

Hal Rosenstock
Sun Oct 24 10:38:01 PDT 2004


ib_mad: In ib_mad_complete_recv, decrement agent reference count when
receive is not fully reassembled, and also when solicited and no
matching request is found. This allows deregistration to complete rather
than waiting for an event which never occurs.

Index: ib_mad.c
===================================================================
--- ib_mad.c    (revision 1044)
+++ ib_mad.c    (working copy)
@@ -873,8 +873,10 @@
 
        /* Fully reassemble receive before processing */
        recv = reassemble_recv(mad_agent_priv, recv);
-       if (!recv)
+       if (!recv) {
+               atomic_dec(&mad_agent_priv->refcount);
                return;
+       }
 
        /* Complete corresponding request */
        if (solicited) {
@@ -884,6 +886,7 @@
                if (!mad_send_wr) {
                        spin_unlock_irqrestore(&mad_agent_priv->lock, flags);
                        ib_free_recv_mad(&recv->header.recv_wc);
+                       atomic_dec(&mad_agent_priv->refcount);
                        return;
                }
                /* Timeout = 0 means that we won't wait for a response */





More information about the openib-general mailing list