diff options
Diffstat (limited to 'fs/nilfs2/super.c')
-rw-r--r-- | fs/nilfs2/super.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/nilfs2/super.c b/fs/nilfs2/super.c index 922263393c76..0d573c2a6860 100644 --- a/fs/nilfs2/super.c +++ b/fs/nilfs2/super.c | |||
@@ -1113,9 +1113,12 @@ nilfs_get_sb(struct file_system_type *fs_type, int flags, | |||
1113 | if (!(flags & MS_RDONLY)) | 1113 | if (!(flags & MS_RDONLY)) |
1114 | mode |= FMODE_WRITE; | 1114 | mode |= FMODE_WRITE; |
1115 | 1115 | ||
1116 | lock_kernel(); | ||
1116 | sd.bdev = open_bdev_exclusive(dev_name, mode, fs_type); | 1117 | sd.bdev = open_bdev_exclusive(dev_name, mode, fs_type); |
1117 | if (IS_ERR(sd.bdev)) | 1118 | if (IS_ERR(sd.bdev)) { |
1119 | unlock_kernel(); | ||
1118 | return PTR_ERR(sd.bdev); | 1120 | return PTR_ERR(sd.bdev); |
1121 | } | ||
1119 | 1122 | ||
1120 | /* | 1123 | /* |
1121 | * To get mount instance using sget() vfs-routine, NILFS needs | 1124 | * To get mount instance using sget() vfs-routine, NILFS needs |
@@ -1198,6 +1201,7 @@ nilfs_get_sb(struct file_system_type *fs_type, int flags, | |||
1198 | if (need_to_close) | 1201 | if (need_to_close) |
1199 | close_bdev_exclusive(sd.bdev, mode); | 1202 | close_bdev_exclusive(sd.bdev, mode); |
1200 | simple_set_mnt(mnt, s); | 1203 | simple_set_mnt(mnt, s); |
1204 | unlock_kernel(); | ||
1201 | return 0; | 1205 | return 0; |
1202 | 1206 | ||
1203 | failed_unlock: | 1207 | failed_unlock: |
@@ -1206,6 +1210,7 @@ nilfs_get_sb(struct file_system_type *fs_type, int flags, | |||
1206 | failed: | 1210 | failed: |
1207 | close_bdev_exclusive(sd.bdev, mode); | 1211 | close_bdev_exclusive(sd.bdev, mode); |
1208 | 1212 | ||
1213 | unlock_kernel(); | ||
1209 | return err; | 1214 | return err; |
1210 | 1215 | ||
1211 | cancel_new: | 1216 | cancel_new: |
@@ -1218,6 +1223,7 @@ nilfs_get_sb(struct file_system_type *fs_type, int flags, | |||
1218 | * We must finish all post-cleaning before this call; | 1223 | * We must finish all post-cleaning before this call; |
1219 | * put_nilfs() needs the block device. | 1224 | * put_nilfs() needs the block device. |
1220 | */ | 1225 | */ |
1226 | unlock_kernel(); | ||
1221 | return err; | 1227 | return err; |
1222 | } | 1228 | } |
1223 | 1229 | ||