summaryrefslogtreecommitdiffstats
path: root/drivers/char/tty_io.c
diff options
context:
space:
mode:
authorAlan Cox2010-05-04 21:42:36 +0200
committerGreg Kroah-Hartman2010-05-13 21:10:56 +0200
commit77945febbe60a69e9dcab7f49d33a1aa1e436973 (patch)
tree1475c6c8215e831904e78a08d1947ffb5a1516ce /drivers/char/tty_io.c
parentserial: mpc52xx_uart: fix null pointer dereference (diff)
downloadkernel-qcow2-linux-77945febbe60a69e9dcab7f49d33a1aa1e436973.tar.gz
kernel-qcow2-linux-77945febbe60a69e9dcab7f49d33a1aa1e436973.tar.xz
kernel-qcow2-linux-77945febbe60a69e9dcab7f49d33a1aa1e436973.zip
tty: Fix unbalanced BKL handling in error path
Arnd noted: After the "retry_open:" label, we first get the tty_mutex and then the BKL. However a the end of tty_open, we jump back to retry_open with the BKL still held. If we run into this case, the tty_open function will be left with the BKL still held. Signed-off-by: Alan Cox <alan@linux.intel.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Cc: stable <stable@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/char/tty_io.c')
-rw-r--r--drivers/char/tty_io.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index 6da962c9b21c..d71f0fc34b46 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -1875,6 +1875,7 @@ got_driver:
*/
if (filp->f_op == &hung_up_tty_fops)
filp->f_op = &tty_fops;
+ unlock_kernel();
goto retry_open;
}
unlock_kernel();