Actually looking at this code one more time:

        spin_lock_irqsave(&idr_lock, flags);
        if (idr_find(&query_idr, query->id) != query) {
                spin_unlock_irqrestore(&idr_lock, flags);
                return;
        }
        spin_unlock_irqrestore(&idr_lock, flags);

        ib_cancel_mad(query->port->agent, query->id);

I realize that it has a race.  I check that the query is still around
inside the spinlock, but the query could complete and be freed in
between the unlock and the call to ib_cancel_mad().  I'll have to add
some reference counting...

 - 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