On Tue, Jun 27, 2017 at 10:34:07AM -0700, Vishwanathapura, Niranjana wrote: > >diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c > >index 0ddd9709e1df..91fae34bdd4f 100644 > >+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c > >@@ -2301,7 +2301,10 @@ static void ipoib_remove_one(struct ib_device *device, void *client_data) > > flush_workqueue(priv->wq); > > > > unregister_netdev(priv->dev); > >- free_netdev(priv->dev); > >+ if (device->free_rdma_netdev) > >+ device->free_rdma_netdev(priv->dev); > >+ else > >+ free_netdev(priv->dev); > > This is causing an crash in hfi1 driver. > If the call to alloc_rdma_netdev() has returned -EOPNOTSUPP, we shouldn't be > calling free_rdma_netdev() here (as device driver doesn't own that netdev). > I will send out a patch to hfi1 driver to guard check for the type in its > free_rdma_netdev() call to handle such issues. I think instead you should move free_rdma_netdev from struct ib_device to struct rdma_netdev to prevent this mistake in general. Jason -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html