TTY: provide tty_standard_install helper
authorJiri Slaby <jslaby@suse.cz>
Mon, 30 Jan 2012 20:14:28 +0000 (21:14 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 2 Feb 2012 22:55:45 +0000 (14:55 -0800)
There are currently many cut&paste copies of what
tty_driver_install_tty does when custom ->install method is not
provided. Let's get rid of the copies and create a helper with this
setup code.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Havard Skinnemoen <hskinnemoen@google.com>
Acked-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/tty_io.c
include/linux/tty.h

index fbcc140..44736f9 100644 (file)
@@ -1271,6 +1271,19 @@ int tty_init_termios(struct tty_struct *tty)
 }
 EXPORT_SYMBOL_GPL(tty_init_termios);
 
+int tty_standard_install(struct tty_driver *driver, struct tty_struct *tty)
+{
+       int ret = tty_init_termios(tty);
+       if (ret)
+               return ret;
+
+       tty_driver_kref_get(driver);
+       tty->count++;
+       driver->ttys[tty->index] = tty;
+       return 0;
+}
+EXPORT_SYMBOL_GPL(tty_standard_install);
+
 /**
  *     tty_driver_install_tty() - install a tty entry in the driver
  *     @driver: the driver for the tty
@@ -1286,21 +1299,8 @@ EXPORT_SYMBOL_GPL(tty_init_termios);
 static int tty_driver_install_tty(struct tty_driver *driver,
                                                struct tty_struct *tty)
 {
-       int idx = tty->index;
-       int ret;
-
-       if (driver->ops->install) {
-               ret = driver->ops->install(driver, tty);
-               return ret;
-       }
-
-       if (tty_init_termios(tty) == 0) {
-               tty_driver_kref_get(driver);
-               tty->count++;
-               driver->ttys[idx] = tty;
-               return 0;
-       }
-       return -ENOMEM;
+       return driver->ops->install ? driver->ops->install(driver, tty) :
+               tty_standard_install(driver, tty);
 }
 
 /**
index d407741..a91ff40 100644 (file)
@@ -484,6 +484,8 @@ extern void deinitialize_tty_struct(struct tty_struct *tty);
 extern struct tty_struct *tty_init_dev(struct tty_driver *driver, int idx);
 extern int tty_release(struct inode *inode, struct file *filp);
 extern int tty_init_termios(struct tty_struct *tty);
+extern int tty_standard_install(struct tty_driver *driver,
+               struct tty_struct *tty);
 
 extern struct tty_struct *tty_pair_get_tty(struct tty_struct *tty);
 extern struct tty_struct *tty_pair_get_pty(struct tty_struct *tty);