summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlan Cox2009-11-30 14:18:40 +0100
committerGreg Kroah-Hartman2009-12-12 00:18:08 +0100
commit38c70b27f9502c31c1d0c29676275f7362cdb0d9 (patch)
treef7545467d3c060a9df2940f731524b74d2f8c2dd
parenttty: Push the lock down further into the ldisc code (diff)
downloadkernel-qcow2-linux-38c70b27f9502c31c1d0c29676275f7362cdb0d9.tar.gz
kernel-qcow2-linux-38c70b27f9502c31c1d0c29676275f7362cdb0d9.tar.xz
kernel-qcow2-linux-38c70b27f9502c31c1d0c29676275f7362cdb0d9.zip
tty: Push the bkl down a bit in the hangup code
We know that the redirect field is handled via its own locking in all places Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/char/tty_io.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index c408c81c06a0..cc941a3504d7 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -505,8 +505,6 @@ static void do_tty_hangup(struct work_struct *work)
if (!tty)
return;
- /* inuse_filps is protected by the single kernel lock */
- lock_kernel();
spin_lock(&redirect_lock);
if (redirect && redirect->private_data == tty) {
@@ -515,6 +513,8 @@ static void do_tty_hangup(struct work_struct *work)
}
spin_unlock(&redirect_lock);
+ /* inuse_filps is protected by the single kernel lock */
+ lock_kernel();
check_tty_count(tty, "do_tty_hangup");
file_list_lock();
/* This breaks for file handles being sent over AF_UNIX sockets ? */