diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index 6da962c9b21c880262a883db546ea1c8c7a99764..d71f0fc34b467c6e7a7c25c0762321f90b7e3fa0 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -1875,6 +1875,7 @@ static int tty_open(struct inode *inode, struct file *filp)
 		 */
 		if (filp->f_op == &hung_up_tty_fops)
 			filp->f_op = &tty_fops;
+		unlock_kernel();
 		goto retry_open;
 	}
 	unlock_kernel();