aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorAlan Cox <alan@redhat.com>2008-10-13 05:40:30 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-13 12:51:41 -0400
commit2cb5998b5f0ccc886fdda3509059eef297b49577 (patch)
tree9113731d3f892c2e164bfd05a7cf1a4b1713a619 /drivers
parent216ba023a96c04e8d3aabf83d5931c35b6e2dbbb (diff)
tty: the vhangup syscall is racy
We now have the infrastructure to sort this out but rather than teaching the syscall tty lock rules we move the hard work into a tty helper Signed-off-by: Alan Cox <alan@redhat.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/char/tty_io.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/char/tty_io.c b/drivers/char/tty_io.c
index 913b50258f90..b5f57d0b30ee 100644
--- a/drivers/char/tty_io.c
+++ b/drivers/char/tty_io.c
@@ -730,6 +730,25 @@ void tty_vhangup(struct tty_struct *tty)
730EXPORT_SYMBOL(tty_vhangup); 730EXPORT_SYMBOL(tty_vhangup);
731 731
732/** 732/**
733 * tty_vhangup_self - process vhangup for own ctty
734 *
735 * Perform a vhangup on the current controlling tty
736 */
737
738void tty_vhangup_self(void)
739{
740 struct tty_struct *tty;
741
742 mutex_lock(&tty_mutex);
743 tty = get_current_tty();
744 if (tty) {
745 tty_vhangup(tty);
746 tty_kref_put(tty);
747 }
748 mutex_unlock(&tty_mutex);
749}
750
751/**
733 * tty_hung_up_p - was tty hung up 752 * tty_hung_up_p - was tty hung up
734 * @filp: file pointer of tty 753 * @filp: file pointer of tty
735 * 754 *