| From 1177c0efc04d032644895b8d757f55b433912596 Mon Sep 17 00:00:00 2001 |
| From: Jiri Slaby <jslaby@suse.cz> |
| Date: Wed, 12 Oct 2011 11:32:44 +0200 |
| Subject: TTY: pty, release tty in all ptmx_open fail paths |
| |
| From: Jiri Slaby <jslaby@suse.cz> |
| |
| commit 1177c0efc04d032644895b8d757f55b433912596 upstream. |
| |
| Mistakenly, commit 64ba3dc3143d (tty: never hold BTM while getting |
| tty_mutex) switched one fail path in ptmx_open to not free the newly |
| allocated tty. |
| |
| Fix that by jumping to the appropriate place. And rename the labels so |
| that it's clear what is going on there. |
| |
| Introduced-in: v2.6.36-rc2 |
| Signed-off-by: Jiri Slaby <jslaby@suse.cz> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/tty/pty.c | 10 +++++----- |
| 1 file changed, 5 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/tty/pty.c |
| +++ b/drivers/tty/pty.c |
| @@ -699,15 +699,15 @@ static int ptmx_open(struct inode *inode |
| |
| retval = devpts_pty_new(inode, tty->link); |
| if (retval) |
| - goto out1; |
| + goto err_release; |
| |
| retval = ptm_driver->ops->open(tty, filp); |
| if (retval) |
| - goto out2; |
| -out1: |
| + goto err_release; |
| + |
| tty_unlock(); |
| - return retval; |
| -out2: |
| + return 0; |
| +err_release: |
| tty_unlock(); |
| tty_release(inode, filp); |
| return retval; |