> @@ -1017,9 +1020,12 @@ static void ib_sa_add_one(struct ib_device *device) > sa_dev->end_port = e; > > for (i = 0; i <= e - s; ++i) { > + spin_lock_init(&sa_dev->port[i].ah_lock); > + if (rdma_port_link_layer(device, i + 1) != > IB_LINK_LAYER_INFINIBAND) > + continue;
Not sure I understand why you move the initialization of the spinlock up here? It seems we ignore everything that might have to do with spinlock if this is an IBoE port. But the larger issue is what if someone calls one of the ib_sa_XXX_query functions on an IBoE port? Seems we just crash on uninitialized structures. I guess we're assuming that the kernel is smart enough not to do that? Also I'm wondering why you did the "count" stuff to ignore IBoE-only devices in multicast.c but not sa_query.c? - R. -- Roland Dreier <rola...@cisco.com> || For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/index.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html