s390/3270: fix initialization order in tty3270_alloc_view
[pandora-kernel.git] / drivers / s390 / char / tty3270.c
index 43ea059..5e4b6fc 100644 (file)
@@ -683,12 +683,6 @@ tty3270_alloc_view(void)
        INIT_LIST_HEAD(&tp->update);
        INIT_LIST_HEAD(&tp->rcl_lines);
        tp->rcl_max = 20;
-       tty_port_init(&tp->port);
-       setup_timer(&tp->timer, (void (*)(unsigned long)) tty3270_update,
-                   (unsigned long) tp);
-       tasklet_init(&tp->readlet,
-                    (void (*)(unsigned long)) tty3270_read_tasklet,
-                    (unsigned long) tp->read);
 
        for (pages = 0; pages < TTY3270_STRING_PAGES; pages++) {
                tp->freemem_pages[pages] = (void *)
@@ -710,6 +704,14 @@ tty3270_alloc_view(void)
        tp->kbd = kbd_alloc();
        if (!tp->kbd)
                goto out_reset;
+
+       tty_port_init(&tp->port);
+       setup_timer(&tp->timer, (void (*)(unsigned long)) tty3270_update,
+                   (unsigned long) tp);
+       tasklet_init(&tp->readlet,
+                    (void (*)(unsigned long)) tty3270_read_tasklet,
+                    (unsigned long) tp->read);
+
        return tp;
 
 out_reset:
@@ -925,6 +927,20 @@ static int tty3270_install(struct tty_driver *driver, struct tty_struct *tty)
        return 0;
 }
 
+/*
+ * This routine is called whenever a 3270 tty is opened.
+ */
+static int
+tty3270_open(struct tty_struct *tty, struct file *filp)
+{
+       struct tty3270 *tp = tty->driver_data;
+       struct tty_port *port = &tp->port;
+
+       port->count++;
+       tty_port_tty_set(port, tty);
+       return 0;
+}
+
 /*
  * This routine is called when the 3270 tty is closed. We wait
  * for the remaining request to be completed. Then we clean up.
@@ -1753,6 +1769,7 @@ static long tty3270_compat_ioctl(struct tty_struct *tty,
 static const struct tty_operations tty3270_ops = {
        .install = tty3270_install,
        .cleanup = tty3270_cleanup,
+       .open = tty3270_open,
        .close = tty3270_close,
        .write = tty3270_write,
        .put_char = tty3270_put_char,