]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
IB: Add devnode methods to cm_class and umad_class
authorRoland Dreier <roland@purestorage.com>
Mon, 23 May 2011 18:21:47 +0000 (11:21 -0700)
committerRoland Dreier <roland@purestorage.com>
Mon, 23 May 2011 18:24:28 +0000 (11:24 -0700)
We want the ucmX, umadX and issmX device nodes to show up under
/dev/infiniband, and additionally ucmX should have mode 0666.  Add
appropriate devnode methods to their class structs for this.

Signed-off-by: Roland Dreier <roland@purestorage.com>
drivers/infiniband/core/cm.c
drivers/infiniband/core/user_mad.c

index f804e28e1ebb5b9dc8ebdfdf8f4c53a81e9b8a72..f62f52fb9ece776000fb98dc830d52bf8bfb4f57 100644 (file)
@@ -3639,8 +3639,16 @@ static struct kobj_type cm_port_obj_type = {
        .release = cm_release_port_obj
 };
 
+static char *cm_devnode(struct device *dev, mode_t *mode)
+{
+       *mode = 0666;
+       return kasprintf(GFP_KERNEL, "infiniband/%s", dev_name(dev));
+}
+
 struct class cm_class = {
+       .owner   = THIS_MODULE,
        .name    = "infiniband_cm",
+       .devnode = cm_devnode,
 };
 EXPORT_SYMBOL(cm_class);
 
index cd1996d0ad089950960ba8bb3f4eaa0bff24f7fe..8d261b6ea5feaef85091726c81df2230d38e56b0 100644 (file)
@@ -1176,6 +1176,11 @@ static void ib_umad_remove_one(struct ib_device *device)
        kref_put(&umad_dev->ref, ib_umad_release_dev);
 }
 
+static char *umad_devnode(struct device *dev, mode_t *mode)
+{
+       return kasprintf(GFP_KERNEL, "infiniband/%s", dev_name(dev));
+}
+
 static int __init ib_umad_init(void)
 {
        int ret;
@@ -1194,6 +1199,8 @@ static int __init ib_umad_init(void)
                goto out_chrdev;
        }
 
+       umad_class->devnode = umad_devnode;
+
        ret = class_create_file(umad_class, &class_attr_abi_version.attr);
        if (ret) {
                printk(KERN_ERR "user_mad: couldn't create abi_version attribute\n");