summaryrefslogtreecommitdiffstats
path: root/fs/devpts
diff options
context:
space:
mode:
authorSukadev Bhattiprolu2009-01-29 01:57:12 +0100
committerAl Viro2009-03-27 19:43:59 +0100
commita9f184f02aa49d46c4c35311d93cbcd1c61149df (patch)
tree0a2f44b6be19fa876c7b423a1d1f02059952f926 /fs/devpts
parentvfs: Further changes from macro to inline function in fs.h (diff)
downloadkernel-qcow2-linux-a9f184f02aa49d46c4c35311d93cbcd1c61149df.tar.gz
kernel-qcow2-linux-a9f184f02aa49d46c4c35311d93cbcd1c61149df.tar.xz
kernel-qcow2-linux-a9f184f02aa49d46c4c35311d93cbcd1c61149df.zip
devpts: Must release s_umount on error
We should drop the ->s_umount mutex if an error occurs after the sget()/grab_super() call. This was introduced when adding support for multiple instances of devpts and noticed during a code review/reorg. Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/devpts')
-rw-r--r--fs/devpts/inode.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index bff4052b05e7..140b43144cd8 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -385,6 +385,7 @@ static int new_pts_mount(struct file_system_type *fs_type, int flags,
fail:
dput(mnt->mnt_sb->s_root);
+ up_write(&mnt->mnt_sb->s_umount);
deactivate_super(mnt->mnt_sb);
return err;
}
@@ -473,6 +474,7 @@ static int init_pts_mount(struct file_system_type *fs_type, int flags,
err = mknod_ptmx(mnt->mnt_sb);
if (err) {
dput(mnt->mnt_sb->s_root);
+ up_write(&mnt->mnt_sb->s_umount);
deactivate_super(mnt->mnt_sb);
}