TTY: ttyprintk, initialize tty_port earlier
authorJiri Slaby <jslaby@suse.cz>
Tue, 7 Aug 2012 19:47:40 +0000 (21:47 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Aug 2012 20:29:57 +0000 (13:29 -0700)
After tty_register_driver is called, it is too late to initialize a
guy with which we operate in open. When a process already called
open(2) on that node, the structures may be in use uninitialized.

Move the initialization prior to tty_register_driver.

Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: Samo Pogacnik <samo_pogacnik@t-2.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/char/ttyprintk.c

index 08755c52fc5f401fdee67abcb130bf0e82704bb5..be1c3fb186c1bad4754394df80dae9e2a7258f08 100644 (file)
@@ -180,6 +180,10 @@ static int __init ttyprintk_init(void)
        int ret = -ENOMEM;
        void *rp;
 
+       tty_port_init(&tpk_port.port);
+       tpk_port.port.ops = &null_ops;
+       mutex_init(&tpk_port.port_write_mutex);
+
        ttyprintk_driver = alloc_tty_driver(1);
        if (!ttyprintk_driver)
                return ret;
@@ -210,10 +214,6 @@ static int __init ttyprintk_init(void)
                goto error;
        }
 
-       tty_port_init(&tpk_port.port);
-       tpk_port.port.ops = &null_ops;
-       mutex_init(&tpk_port.port_write_mutex);
-
        return 0;
 
 error: