kernel/devfs: Fill out cdev_t's si_major field (and adjust one use case).
authorSascha Wildner <saw@online.de>
Sun, 26 Aug 2012 10:12:46 +0000 (12:12 +0200)
committerSascha Wildner <saw@online.de>
Sun, 26 Aug 2012 10:31:26 +0000 (12:31 +0200)
sys/kern/kern_udev.c
sys/vfs/devfs/devfs_core.c

index d9602a1..6d153fe 100644 (file)
@@ -369,7 +369,7 @@ udev_init_dict(cdev_t dev)
        if ((error = _udev_dict_set_int(dict, "mode", dev->si_perms)))
                goto error_out;
 
-       if ((error = _udev_dict_set_int(dict, "major", umajor(dev->si_inode))))
+       if ((error = _udev_dict_set_int(dict, "major", dev->si_umajor)))
                goto error_out;
        if ((error = _udev_dict_set_int(dict, "minor", dev->si_uminor)))
                goto error_out;
index eb14bb3..f554acf 100644 (file)
@@ -340,7 +340,7 @@ try_again:
                KKASSERT(node->d_dev);
 
                vp->v_uminor = node->d_dev->si_uminor;
-               vp->v_umajor = 0;
+               vp->v_umajor = node->d_dev->si_umajor;
 
                v_associate_rdev(vp, node->d_dev);
                vp->v_ops = &node->mp->mnt_vn_spec_ops;
@@ -2242,7 +2242,6 @@ devfs_new_cdev(struct dev_ops *ops, int minor, struct dev_ops *bops)
        dev->si_parent = NULL;
        dev->si_ops = ops;
        dev->si_flags = 0;
-       dev->si_umajor = 0;
        dev->si_uminor = minor;
        dev->si_bops = bops;
 
@@ -2261,6 +2260,7 @@ devfs_new_cdev(struct dev_ops *ops, int minor, struct dev_ops *bops)
        dev->si_inode = makeudev(
                    devfs_reference_ops((bops)?(bops):(ops)),
                    minor );
+       dev->si_umajor = umajor(dev->si_inode);
 
        return dev;
 }