summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaeseok Youn <daeseok.youn@gmail.com>2016-05-04 05:41:22 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-05-04 05:57:14 (GMT)
commita0ca97b808c06793fd9dfb69243ce945c9fff501 (patch)
tree766f7514ac832b6937ba161123ec4d2475648ef6
parentd13829686bba3e06e2217f044beb8fd5a9abf792 (diff)
downloadlinux-a0ca97b808c06793fd9dfb69243ce945c9fff501.tar.xz
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>
-rw-r--r--drivers/staging/dgnc/dgnc_tty.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/staging/dgnc/dgnc_tty.c b/drivers/staging/dgnc/dgnc_tty.c
index 2cecdb0..392d532 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.