> +static void iboe_mcast_work_handler(struct work_struct *work) > +{ > + struct iboe_mcast_work *mw = container_of(work, struct iboe_mcast_work, > work); > + struct cma_multicast *mc = mw->mc; > + struct ib_sa_multicast *m = mc->multicast.ib; > + > + mc->multicast.ib->context = mc; > + cma_ib_mc_handler(0, m); > + kref_put(&mc->mcref, release_mc); > + kfree(mw); > +}
I'm having a hard time working out why the iboe case needs to schedule to a work queue here since its already in process context, right? It seems it would be really preferable to avoid all the extra pointer munging and reference counting, and just call things directly. - R. -- Roland Dreier <rola...@cisco.com> || For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/index.html _______________________________________________ ewg mailing list ewg@lists.openfabrics.org http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg