diff options
author | Daeseok Youn <daeseok.youn@gmail.com> | 2014-06-13 13:19:55 +0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2014-06-20 02:23:31 +0400 |
commit | 08f53f61afd1fdba7f50409e6da10b7484c24aa6 (patch) | |
tree | dbe44e29558b66d0f22baa34de8f20f77c1e887a /drivers/staging/dgap | |
parent | 219a40d0992a6aaf9da6f974b9023f1a711dc582 (diff) | |
download | linux-08f53f61afd1fdba7f50409e6da10b7484c24aa6.tar.xz |
staging: dgap: introduce dgap_tty_free() for freeing channels.
It should be called after dgap_tty_register_ports() is failed.
So channels which are allocated in dgap_tty_init() will be freed.
Signed-off-by: Daeseok Youn <daeseok.youn@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/dgap')
-rw-r--r-- | drivers/staging/dgap/dgap.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/staging/dgap/dgap.c b/drivers/staging/dgap/dgap.c index 352eb1b92db8..eab8fd56f55b 100644 --- a/drivers/staging/dgap/dgap.c +++ b/drivers/staging/dgap/dgap.c @@ -123,6 +123,7 @@ static void dgap_tty_send_xchar(struct tty_struct *tty, char ch); static int dgap_tty_register(struct board_t *brd); static int dgap_tty_init(struct board_t *); +static void dgap_tty_free(struct board_t *); static void dgap_cleanup_tty(struct board_t *); static void dgap_carrier(struct channel_t *ch); static void dgap_input(struct channel_t *ch); @@ -960,8 +961,10 @@ static int dgap_firmware_load(struct pci_dev *pdev, int card_type) return ret; ret = dgap_tty_register_ports(brd); - if (ret) + if (ret) { + dgap_tty_free(brd); return ret; + } brd->state = BOARD_READY; brd->dpastatus = BD_RUNNING; @@ -1488,6 +1491,18 @@ free_chan: } /* + * dgap_tty_free() + * + * Free the channles which are allocated in dgap_tty_init(). + */ +static void dgap_tty_free(struct board_t *brd) +{ + int i; + + for (i = 0; i < brd->nasync; i++) + kfree(brd->channels[i]); +} +/* * dgap_cleanup_tty() * * Uninitialize the TTY portion of this driver. Free all memory and |