diff options
author | Nick Piggin <npiggin@kernel.dk> | 2010-08-17 14:37:35 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-08-18 08:35:47 -0400 |
commit | ee2ffa0dfdd2db19705f2ba1c6a4c0bfe8122dd8 (patch) | |
tree | e48400d1a33f8d2e68589ccfd61637aa64462f08 /drivers/char/pty.c | |
parent | b04f784e5d19ed58892833dae845738972cea260 (diff) |
fs: cleanup files_lock locking
fs: cleanup files_lock locking
Lock tty_files with a new spinlock, tty_files_lock; provide helpers to
manipulate the per-sb files list; unexport the files_lock spinlock.
Cc: linux-kernel@vger.kernel.org
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Acked-by: Andi Kleen <ak@linux.intel.com>
Acked-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'drivers/char/pty.c')
-rw-r--r-- | drivers/char/pty.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/char/pty.c b/drivers/char/pty.c index ad46eae1f9bb..2c64faa8efa4 100644 --- a/drivers/char/pty.c +++ b/drivers/char/pty.c | |||
@@ -676,7 +676,11 @@ static int ptmx_open(struct inode *inode, struct file *filp) | |||
676 | 676 | ||
677 | set_bit(TTY_PTY_LOCK, &tty->flags); /* LOCK THE SLAVE */ | 677 | set_bit(TTY_PTY_LOCK, &tty->flags); /* LOCK THE SLAVE */ |
678 | filp->private_data = tty; | 678 | filp->private_data = tty; |
679 | file_move(filp, &tty->tty_files); | 679 | |
680 | file_sb_list_del(filp); /* __dentry_open has put it on the sb list */ | ||
681 | spin_lock(&tty_files_lock); | ||
682 | list_add(&filp->f_u.fu_list, &tty->tty_files); | ||
683 | spin_unlock(&tty_files_lock); | ||
680 | 684 | ||
681 | retval = devpts_pty_new(inode, tty->link); | 685 | retval = devpts_pty_new(inode, tty->link); |
682 | if (retval) | 686 | if (retval) |