diff options
author | Daeseok Youn <daeseok.youn@gmail.com> | 2016-05-04 14:41:22 +0900 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2016-05-03 22:57:14 -0700 |
commit | a0ca97b808c06793fd9dfb69243ce945c9fff501 (patch) | |
tree | 766f7514ac832b6937ba161123ec4d2475648ef6 /drivers/staging/dgnc/dgnc_tty.c | |
parent | d13829686bba3e06e2217f044beb8fd5a9abf792 (diff) |
staging: dgnc: Fix a NULL pointer dereference
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>
Diffstat (limited to 'drivers/staging/dgnc/dgnc_tty.c')
-rw-r--r-- | drivers/staging/dgnc/dgnc_tty.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/staging/dgnc/dgnc_tty.c b/drivers/staging/dgnc/dgnc_tty.c index 2cecdb0663f4..392d5328c7d9 100644 --- a/drivers/staging/dgnc/dgnc_tty.c +++ b/drivers/staging/dgnc/dgnc_tty.c @@ -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. |