aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/tty_io.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/tty_io.c')
-rw-r--r--drivers/char/tty_io.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index a19fef2093f1..684f0e0b175e 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -516,6 +516,8 @@ static void do_tty_hangup(struct work_struct *work)
516 /* inuse_filps is protected by the single kernel lock */ 516 /* inuse_filps is protected by the single kernel lock */
517 lock_kernel(); 517 lock_kernel();
518 check_tty_count(tty, "do_tty_hangup"); 518 check_tty_count(tty, "do_tty_hangup");
519 unlock_kernel();
520
519 file_list_lock(); 521 file_list_lock();
520 /* This breaks for file handles being sent over AF_UNIX sockets ? */ 522 /* This breaks for file handles being sent over AF_UNIX sockets ? */
521 list_for_each_entry(filp, &tty->tty_files, f_u.fu_list) { 523 list_for_each_entry(filp, &tty->tty_files, f_u.fu_list) {
@@ -529,6 +531,7 @@ static void do_tty_hangup(struct work_struct *work)
529 } 531 }
530 file_list_unlock(); 532 file_list_unlock();
531 533
534 lock_kernel();
532 tty_ldisc_hangup(tty); 535 tty_ldisc_hangup(tty);
533 536
534 read_lock(&tasklist_lock); 537 read_lock(&tasklist_lock);