summaryrefslogtreecommitdiffstats
path: root/drivers/staging/fwserial
diff options
context:
space:
mode:
authorVladimirs Ambrosovs <rodriguez.twister@gmail.com>2015-05-25 23:22:44 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2015-05-31 11:47:57 +0900
commit904998bf542309735f944387c158ceed84f6abc6 (patch)
tree3cddb7dba8430213cb0da4beb760f84bf49b284e /drivers/staging/fwserial
parent71d667b800c53f840f516eb7d332186ffee3e84a (diff)
downloadop-kernel-dev-904998bf542309735f944387c158ceed84f6abc6.zip
op-kernel-dev-904998bf542309735f944387c158ceed84f6abc6.tar.gz
staging: fwserial: fix resource leak
This patch fixes the leak, which was present in fwserial driver in the init function. In case the tty driver allocation failed the function returned error, leaving debugfs entry in the filesystem. To fix the issue additional error label was added, so that the code will jump to it in case of allocation failure, and free debugfs entries. Signed-off-by: Vladimirs Ambrosovs <rodriguez.twister@gmail.com> Reviewed-by: Peter Hurley <peter@hurleysoftware.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/fwserial')
-rw-r--r--drivers/staging/fwserial/fwserial.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/staging/fwserial/fwserial.c b/drivers/staging/fwserial/fwserial.c
index fdb2418..b3ea4bb 100644
--- a/drivers/staging/fwserial/fwserial.c
+++ b/drivers/staging/fwserial/fwserial.c
@@ -2815,13 +2815,14 @@ static int __init fwserial_init(void)
/* num_ttys/num_ports must not be set above the static alloc avail */
if (num_ttys + num_loops > MAX_CARD_PORTS)
num_ttys = MAX_CARD_PORTS - num_loops;
+
num_ports = num_ttys + num_loops;
fwtty_driver = tty_alloc_driver(MAX_TOTAL_PORTS, TTY_DRIVER_REAL_RAW
| TTY_DRIVER_DYNAMIC_DEV);
if (IS_ERR(fwtty_driver)) {
err = PTR_ERR(fwtty_driver);
- return err;
+ goto remove_debugfs;
}
fwtty_driver->driver_name = KBUILD_MODNAME;
@@ -2923,7 +2924,9 @@ unregister_driver:
tty_unregister_driver(fwtty_driver);
put_tty:
put_tty_driver(fwtty_driver);
+remove_debugfs:
debugfs_remove_recursive(fwserial_debugfs);
+
return err;
}
OpenPOWER on IntegriCloud