diff options
Diffstat (limited to 'drivers/char/tty_io.c')
-rw-r--r-- | drivers/char/tty_io.c | 3 |
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); |