diff options
author | David S. Miller <davem@davemloft.net> | 2009-05-17 18:55:57 (GMT) |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-05-17 18:55:57 (GMT) |
commit | 74392592bbf7e93ef383588e21aea0c1450d6f12 (patch) | |
tree | 086981f9ef51d57a34fbc5fde8095652877cf739 /fs/9p/vfs_super.c | |
parent | 17e4d43eb6743a92d7667c822a3c3ecd63a9c58e (diff) | |
parent | 0f6f49a8cd0163fdb1723ed29f01fc65177108dc (diff) | |
download | linux-fsl-qoriq-74392592bbf7e93ef383588e21aea0c1450d6f12.tar.xz |
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
Diffstat (limited to 'fs/9p/vfs_super.c')
-rw-r--r-- | fs/9p/vfs_super.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/fs/9p/vfs_super.c b/fs/9p/vfs_super.c index 5f8ab8a..ab5547f 100644 --- a/fs/9p/vfs_super.c +++ b/fs/9p/vfs_super.c @@ -37,6 +37,7 @@ #include <linux/mount.h> #include <linux/idr.h> #include <linux/sched.h> +#include <linux/smp_lock.h> #include <net/9p/9p.h> #include <net/9p/client.h> @@ -155,6 +156,7 @@ static int v9fs_get_sb(struct file_system_type *fs_type, int flags, root = d_alloc_root(inode); if (!root) { + iput(inode); retval = -ENOMEM; goto release_sb; } @@ -173,10 +175,7 @@ P9_DPRINTK(P9_DEBUG_VFS, " simple set mount, return 0\n"); return 0; release_sb: - if (sb) { - up_write(&sb->s_umount); - deactivate_super(sb); - } + deactivate_locked_super(sb); free_stat: kfree(st); @@ -230,9 +229,12 @@ static int v9fs_show_options(struct seq_file *m, struct vfsmount *mnt) static void v9fs_umount_begin(struct super_block *sb) { - struct v9fs_session_info *v9ses = sb->s_fs_info; + struct v9fs_session_info *v9ses; + lock_kernel(); + v9ses = sb->s_fs_info; v9fs_session_cancel(v9ses); + unlock_kernel(); } static const struct super_operations v9fs_super_ops = { |