From 904998bf542309735f944387c158ceed84f6abc6 Mon Sep 17 00:00:00 2001 From: Vladimirs Ambrosovs Date: Mon, 25 May 2015 23:22:44 +0300 Subject: [PATCH] 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 Reviewed-by: Peter Hurley Signed-off-by: Greg Kroah-Hartman --- drivers/staging/fwserial/fwserial.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/staging/fwserial/fwserial.c b/drivers/staging/fwserial/fwserial.c index fdb2418c5f88..b3ea4bb54e2c 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; } -- 2.39.5