Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

TTY: pty, release tty in all ptmx_open fail paths

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: stable <stable@vger.kernel.org>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

authored by

Jiri Slaby and committed by
Greg Kroah-Hartman
1177c0ef fa90e1c9

+5 -5
+5 -5
drivers/tty/pty.c
··· 686 686 687 687 retval = devpts_pty_new(inode, tty->link); 688 688 if (retval) 689 - goto out1; 689 + goto err_release; 690 690 691 691 retval = ptm_driver->ops->open(tty, filp); 692 692 if (retval) 693 - goto out2; 694 - out1: 693 + goto err_release; 694 + 695 695 tty_unlock(); 696 - return retval; 697 - out2: 696 + return 0; 697 + err_release: 698 698 tty_unlock(); 699 699 tty_release(inode, filp); 700 700 return retval;