Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / drivers / char / vc_screen.c
index 55971a2..3c1dafa 100644 (file)
@@ -52,14 +52,17 @@ vcs_size(struct inode *inode)
        int size;
        int minor = iminor(inode);
        int currcons = minor & 127;
+       struct vc_data *vc;
+
        if (currcons == 0)
                currcons = fg_console;
        else
                currcons--;
        if (!vc_cons_allocated(currcons))
                return -ENXIO;
+       vc = vc_cons[currcons].d;
 
-       size = vc_cons[currcons].d->vc_rows * vc_cons[currcons].d->vc_cols;
+       size = vc->vc_rows * vc->vc_cols;
 
        if (minor & 128)
                size = 2*size + HEADER_SIZE;
@@ -416,7 +419,7 @@ vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
                        while (this_round > 1) {
                                unsigned short w;
 
-                               w = get_unaligned(((const unsigned short *)con_buf0));
+                               w = get_unaligned(((unsigned short *)con_buf0));
                                vcs_scr_writew(vc, w, org++);
                                con_buf0 += 2;
                                this_round -= 2;
@@ -442,7 +445,7 @@ vcs_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
                buf += orig_count;
                pos += orig_count;
                if (org0)
-                       update_region(currcons, (unsigned long)(org0), org-org0);
+                       update_region(vc, (unsigned long)(org0), org - org0);
        }
        *ppos += written;
        ret = written;
@@ -471,7 +474,7 @@ static struct file_operations vcs_fops = {
        .open           = vcs_open,
 };
 
-static struct class_simple *vc_class;
+static struct class *vc_class;
 
 void vcs_make_devfs(struct tty_struct *tty)
 {
@@ -481,26 +484,28 @@ void vcs_make_devfs(struct tty_struct *tty)
        devfs_mk_cdev(MKDEV(VCS_MAJOR, tty->index + 129),
                        S_IFCHR|S_IRUSR|S_IWUSR,
                        "vcc/a%u", tty->index + 1);
-       class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, tty->index + 1), NULL, "vcs%u", tty->index + 1);
-       class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, tty->index + 129), NULL, "vcsa%u", tty->index + 1);
+       class_device_create(vc_class, NULL, MKDEV(VCS_MAJOR, tty->index + 1),
+                       NULL, "vcs%u", tty->index + 1);
+       class_device_create(vc_class, NULL, MKDEV(VCS_MAJOR, tty->index + 129),
+                       NULL, "vcsa%u", tty->index + 1);
 }
 void vcs_remove_devfs(struct tty_struct *tty)
 {
        devfs_remove("vcc/%u", tty->index + 1);
        devfs_remove("vcc/a%u", tty->index + 1);
-       class_simple_device_remove(MKDEV(VCS_MAJOR, tty->index + 1));
-       class_simple_device_remove(MKDEV(VCS_MAJOR, tty->index + 129));
+       class_device_destroy(vc_class, MKDEV(VCS_MAJOR, tty->index + 1));
+       class_device_destroy(vc_class, MKDEV(VCS_MAJOR, tty->index + 129));
 }
 
 int __init vcs_init(void)
 {
        if (register_chrdev(VCS_MAJOR, "vcs", &vcs_fops))
                panic("unable to get major %d for vcs device", VCS_MAJOR);
-       vc_class = class_simple_create(THIS_MODULE, "vc");
+       vc_class = class_create(THIS_MODULE, "vc");
 
        devfs_mk_cdev(MKDEV(VCS_MAJOR, 0), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/0");
        devfs_mk_cdev(MKDEV(VCS_MAJOR, 128), S_IFCHR|S_IRUSR|S_IWUSR, "vcc/a0");
-       class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, 0), NULL, "vcs");
-       class_simple_device_add(vc_class, MKDEV(VCS_MAJOR, 128), NULL, "vcsa");
+       class_device_create(vc_class, NULL, MKDEV(VCS_MAJOR, 0), NULL, "vcs");
+       class_device_create(vc_class, NULL, MKDEV(VCS_MAJOR, 128), NULL, "vcsa");
        return 0;
 }