]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
staging: dgnc: Fix a NULL pointer dereference
authorDaeseok Youn <daeseok.youn@gmail.com>
Wed, 4 May 2016 05:41:22 +0000 (14:41 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 May 2016 05:57:14 +0000 (22:57 -0700)
The error handling for print_drive after calling tty_alloc_driver()
was needed. But there was error handling but too late for this.
Error handling code moved after tty_alloc_driver() call.

Fixes: 60b3109e5e2d ("staging: dgnc: use tty_alloc_driver instead of kcalloc")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/dgnc/dgnc_tty.c

index 2cecdb0663f45f775512d41ae0f901fce40d2923..392d5328c7d94b81de599dd0dab9f3e63ebe1742 100644 (file)
@@ -224,6 +224,11 @@ int dgnc_tty_register(struct dgnc_board *brd)
                                             TTY_DRIVER_DYNAMIC_DEV |
                                             TTY_DRIVER_HARDWARE_BREAK);
 
+       if (IS_ERR(brd->print_driver)) {
+               rc = PTR_ERR(brd->print_driver);
+               goto unregister_serial_driver;
+       }
+
        snprintf(brd->print_name, MAXTTYNAMELEN, "pr_dgnc_%d_", brd->boardnum);
 
        brd->print_driver->name = brd->print_name;
@@ -235,11 +240,6 @@ int dgnc_tty_register(struct dgnc_board *brd)
        brd->print_driver->init_termios = DgncDefaultTermios;
        brd->print_driver->driver_name = DRVSTR;
 
-       if (IS_ERR(brd->print_driver)) {
-               rc = PTR_ERR(brd->print_driver);
-               goto unregister_serial_driver;
-       }
-
        /*
         * Entry points for driver.  Called by the kernel from
         * tty_io.c and n_tty.c.