diff options
Diffstat (limited to 'fs/bfs/inode.c')
-rw-r--r-- | fs/bfs/inode.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c index c4daf0f5fc02..d2e09363dd93 100644 --- a/fs/bfs/inode.c +++ b/fs/bfs/inode.c | |||
@@ -322,9 +322,13 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) | |||
322 | int ret = -EINVAL; | 322 | int ret = -EINVAL; |
323 | unsigned long i_sblock, i_eblock, i_eoff, s_size; | 323 | unsigned long i_sblock, i_eblock, i_eoff, s_size; |
324 | 324 | ||
325 | lock_kernel(); | ||
326 | |||
325 | info = kzalloc(sizeof(*info), GFP_KERNEL); | 327 | info = kzalloc(sizeof(*info), GFP_KERNEL); |
326 | if (!info) | 328 | if (!info) { |
329 | unlock_kernel(); | ||
327 | return -ENOMEM; | 330 | return -ENOMEM; |
331 | } | ||
328 | mutex_init(&info->bfs_lock); | 332 | mutex_init(&info->bfs_lock); |
329 | s->s_fs_info = info; | 333 | s->s_fs_info = info; |
330 | 334 | ||
@@ -439,6 +443,7 @@ static int bfs_fill_super(struct super_block *s, void *data, int silent) | |||
439 | brelse(bh); | 443 | brelse(bh); |
440 | brelse(sbh); | 444 | brelse(sbh); |
441 | dump_imap("read_super", s); | 445 | dump_imap("read_super", s); |
446 | unlock_kernel(); | ||
442 | return 0; | 447 | return 0; |
443 | 448 | ||
444 | out3: | 449 | out3: |
@@ -452,6 +457,7 @@ out: | |||
452 | mutex_destroy(&info->bfs_lock); | 457 | mutex_destroy(&info->bfs_lock); |
453 | kfree(info); | 458 | kfree(info); |
454 | s->s_fs_info = NULL; | 459 | s->s_fs_info = NULL; |
460 | unlock_kernel(); | ||
455 | return ret; | 461 | return ret; |
456 | } | 462 | } |
457 | 463 | ||