diff options
author | Alan Cox <alan@redhat.com> | 2008-10-13 05:40:30 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-13 12:51:41 -0400 |
commit | 2cb5998b5f0ccc886fdda3509059eef297b49577 (patch) | |
tree | 9113731d3f892c2e164bfd05a7cf1a4b1713a619 /drivers/char/tty_io.c | |
parent | 216ba023a96c04e8d3aabf83d5931c35b6e2dbbb (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/char/tty_io.c')
-rw-r--r-- | drivers/char/tty_io.c | 19 |
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) | |||
730 | EXPORT_SYMBOL(tty_vhangup); | 730 | EXPORT_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 | |||
738 | void 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 | * |