linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / drivers / infiniband / core / sysfs.c
index 21f9282..5982d68 100644 (file)
@@ -112,7 +112,7 @@ static ssize_t state_show(struct ib_port *p, struct port_attribute *unused,
                return ret;
 
        return sprintf(buf, "%d: %s\n", attr.state,
-                      attr.state >= 0 && attr.state < ARRAY_SIZE(state_name) ?
+                      attr.state >= 0 && attr.state <= ARRAY_SIZE(state_name) ?
                       state_name[attr.state] : "UNKNOWN");
 }
 
@@ -336,7 +336,7 @@ static ssize_t show_pma_counter(struct ib_port *p, struct port_attribute *attr,
        switch (width) {
        case 4:
                ret = sprintf(buf, "%u\n", (out_mad->data[40 + offset / 8] >>
-                                           (4 - (offset % 8))) & 0xf);
+                                           (offset % 4)) & 0xf);
                break;
        case 8:
                ret = sprintf(buf, "%u\n", out_mad->data[40 + offset / 8]);
@@ -472,10 +472,8 @@ alloc_group_attrs(ssize_t (*show)(struct ib_port *,
                        goto err;
 
                if (snprintf(element->name, sizeof(element->name),
-                            "%d", i) >= sizeof(element->name)) {
-                       kfree(element);
+                            "%d", i) >= sizeof(element->name))
                        goto err;
-               }
 
                element->attr.attr.name  = element->name;
                element->attr.attr.mode  = S_IRUGO;
@@ -630,42 +628,14 @@ static ssize_t show_node_guid(struct class_device *cdev, char *buf)
                       be16_to_cpu(((__be16 *) &dev->node_guid)[3]));
 }
 
-static ssize_t show_node_desc(struct class_device *cdev, char *buf)
-{
-       struct ib_device *dev = container_of(cdev, struct ib_device, class_dev);
-
-       return sprintf(buf, "%.64s\n", dev->node_desc);
-}
-
-static ssize_t set_node_desc(struct class_device *cdev, const char *buf,
-                             size_t count)
-{
-       struct ib_device *dev = container_of(cdev, struct ib_device, class_dev);
-       struct ib_device_modify desc = {};
-       int ret;
-
-       if (!dev->modify_device)
-               return -EIO;
-
-       memcpy(desc.node_desc, buf, min_t(int, count, 64));
-       ret = ib_modify_device(dev, IB_DEVICE_MODIFY_NODE_DESC, &desc);
-       if (ret)
-               return ret;
-
-       return count;
-}
-
 static CLASS_DEVICE_ATTR(node_type, S_IRUGO, show_node_type, NULL);
 static CLASS_DEVICE_ATTR(sys_image_guid, S_IRUGO, show_sys_image_guid, NULL);
 static CLASS_DEVICE_ATTR(node_guid, S_IRUGO, show_node_guid, NULL);
-static CLASS_DEVICE_ATTR(node_desc, S_IRUGO | S_IWUSR, show_node_desc,
-                        set_node_desc);
 
 static struct class_device_attribute *ib_class_attributes[] = {
        &class_device_attr_node_type,
        &class_device_attr_sys_image_guid,
-       &class_device_attr_node_guid,
-       &class_device_attr_node_desc
+       &class_device_attr_node_guid
 };
 
 static struct class ib_class = {