diff options
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 5f8ab8adb5f5..ab5547ff29a1 100644 --- a/fs/9p/vfs_super.c +++ b/fs/9p/vfs_super.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <linux/mount.h> | 37 | #include <linux/mount.h> |
38 | #include <linux/idr.h> | 38 | #include <linux/idr.h> |
39 | #include <linux/sched.h> | 39 | #include <linux/sched.h> |
40 | #include <linux/smp_lock.h> | ||
40 | #include <net/9p/9p.h> | 41 | #include <net/9p/9p.h> |
41 | #include <net/9p/client.h> | 42 | #include <net/9p/client.h> |
42 | 43 | ||
@@ -155,6 +156,7 @@ static int v9fs_get_sb(struct file_system_type *fs_type, int flags, | |||
155 | 156 | ||
156 | root = d_alloc_root(inode); | 157 | root = d_alloc_root(inode); |
157 | if (!root) { | 158 | if (!root) { |
159 | iput(inode); | ||
158 | retval = -ENOMEM; | 160 | retval = -ENOMEM; |
159 | goto release_sb; | 161 | goto release_sb; |
160 | } | 162 | } |
@@ -173,10 +175,7 @@ P9_DPRINTK(P9_DEBUG_VFS, " simple set mount, return 0\n"); | |||
173 | return 0; | 175 | return 0; |
174 | 176 | ||
175 | release_sb: | 177 | release_sb: |
176 | if (sb) { | 178 | deactivate_locked_super(sb); |
177 | up_write(&sb->s_umount); | ||
178 | deactivate_super(sb); | ||
179 | } | ||
180 | 179 | ||
181 | free_stat: | 180 | free_stat: |
182 | kfree(st); | 181 | kfree(st); |
@@ -230,9 +229,12 @@ static int v9fs_show_options(struct seq_file *m, struct vfsmount *mnt) | |||
230 | static void | 229 | static void |
231 | v9fs_umount_begin(struct super_block *sb) | 230 | v9fs_umount_begin(struct super_block *sb) |
232 | { | 231 | { |
233 | struct v9fs_session_info *v9ses = sb->s_fs_info; | 232 | struct v9fs_session_info *v9ses; |
234 | 233 | ||
234 | lock_kernel(); | ||
235 | v9ses = sb->s_fs_info; | ||
235 | v9fs_session_cancel(v9ses); | 236 | v9fs_session_cancel(v9ses); |
237 | unlock_kernel(); | ||
236 | } | 238 | } |
237 | 239 | ||
238 | static const struct super_operations v9fs_super_ops = { | 240 | static const struct super_operations v9fs_super_ops = { |