>How about this approach?  Basically it just open-codes delayed work by
>splitting the timer and the work struct, and switches to mod_timer()
>instead of del_timer() + add_timer().  It passes very light testing here
>(basically I started ipoib and nothing blew up).

The approach looks okay to me. 

>@@ -512,7 +523,8 @@ static void unregister_mad_agent(struct
>ib_mad_agent_private *mad_agent_priv)
>        */
>       cancel_mads(mad_agent_priv);
>       port_priv = mad_agent_priv->qp_info->port_priv;
>-      cancel_delayed_work(&mad_agent_priv->timed_work);
>+      del_timer_sync(&mad_agent_priv->timeout_timer);
>+      cancel_work_sync(&mad_agent_priv->timeout_work);

I had to check if there was a race between del_timer_sync() and the worker
thread, but the call to cancel_mads() looks like it prevents any issues.

- Sean

_______________________________________________
general mailing list
general@lists.openfabrics.org
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

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

Reply via email to