Commit 36ba782e authored by Alan Cox's avatar Alan Cox Committed by Greg Kroah-Hartman

tty: split the lock up a bit further

The tty count sanity check may need the BKL, that isn't clear. However it
is clear that the count use of the lock is internal and independant of the
bigger use of the lock.

Furthermore the file list locking is also separately locked already
Signed-off-by: default avatarAlan Cox <alan@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 5ec93d11
...@@ -516,6 +516,8 @@ static void do_tty_hangup(struct work_struct *work) ...@@ -516,6 +516,8 @@ static void do_tty_hangup(struct work_struct *work)
/* inuse_filps is protected by the single kernel lock */ /* inuse_filps is protected by the single kernel lock */
lock_kernel(); lock_kernel();
check_tty_count(tty, "do_tty_hangup"); check_tty_count(tty, "do_tty_hangup");
unlock_kernel();
file_list_lock(); file_list_lock();
/* This breaks for file handles being sent over AF_UNIX sockets ? */ /* This breaks for file handles being sent over AF_UNIX sockets ? */
list_for_each_entry(filp, &tty->tty_files, f_u.fu_list) { 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,6 +531,7 @@ static void do_tty_hangup(struct work_struct *work)
} }
file_list_unlock(); file_list_unlock();
lock_kernel();
tty_ldisc_hangup(tty); tty_ldisc_hangup(tty);
read_lock(&tasklist_lock); read_lock(&tasklist_lock);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment