From: Roland Dreier This should fix up the netdevice class stuff for IPoIB CM. Cc: Greg KH Signed-off-by: Andrew Morton --- drivers/infiniband/ulp/ipoib/ipoib_cm.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff -puN drivers/infiniband/ulp/ipoib/ipoib_cm.c~infiniband-fix-for-gregkh-driver-network-device drivers/infiniband/ulp/ipoib/ipoib_cm.c --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c~infiniband-fix-for-gregkh-driver-network-device +++ a/drivers/infiniband/ulp/ipoib/ipoib_cm.c @@ -1099,10 +1099,10 @@ static void ipoib_cm_stale_task(struct w } -static ssize_t show_mode(struct class_device *cdev, char *buf) +static ssize_t show_mode(struct device *d, struct device_attribute *attr, + char *buf) { - struct net_device *dev = container_of(cdev, struct net_device, class_dev); - struct ipoib_dev_priv *priv = netdev_priv(dev); + struct ipoib_dev_priv *priv = netdev_priv(to_net_dev(d)); if (test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags)) return sprintf(buf, "connected\n"); @@ -1110,10 +1110,10 @@ static ssize_t show_mode(struct class_de return sprintf(buf, "datagram\n"); } -static ssize_t set_mode(struct class_device *cdev, +static ssize_t set_mode(struct device *d, struct device_attribute *attr, const char *buf, size_t count) { - struct net_device *dev = container_of(cdev, struct net_device, class_dev); + struct net_device *dev = to_net_dev(d); struct ipoib_dev_priv *priv = netdev_priv(dev); /* flush paths if we switch modes so that connections are restarted */ @@ -1135,11 +1135,11 @@ static ssize_t set_mode(struct class_dev return -EINVAL; } -static CLASS_DEVICE_ATTR(mode, S_IWUGO | S_IRUGO, show_mode, set_mode); +static DEVICE_ATTR(mode, S_IWUGO | S_IRUGO, show_mode, set_mode); int ipoib_cm_add_mode_attr(struct net_device *dev) { - return class_device_create_file(&dev->class_dev, &class_device_attr_mode); + return device_create_file(&dev->dev, &dev_attr_mode); } int ipoib_cm_dev_init(struct net_device *dev) _