diff options
Diffstat (limited to 'fs/hpfs/super.c')
-rw-r--r-- | fs/hpfs/super.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c index 2607010be2fe..6c5f01597c3a 100644 --- a/fs/hpfs/super.c +++ b/fs/hpfs/super.c | |||
@@ -477,17 +477,21 @@ static int hpfs_fill_super(struct super_block *s, void *options, int silent) | |||
477 | 477 | ||
478 | int o; | 478 | int o; |
479 | 479 | ||
480 | lock_kernel(); | ||
481 | |||
480 | save_mount_options(s, options); | 482 | save_mount_options(s, options); |
481 | 483 | ||
482 | sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); | 484 | sbi = kzalloc(sizeof(*sbi), GFP_KERNEL); |
483 | if (!sbi) | 485 | if (!sbi) { |
486 | unlock_kernel(); | ||
484 | return -ENOMEM; | 487 | return -ENOMEM; |
488 | } | ||
485 | s->s_fs_info = sbi; | 489 | s->s_fs_info = sbi; |
486 | 490 | ||
487 | sbi->sb_bmp_dir = NULL; | 491 | sbi->sb_bmp_dir = NULL; |
488 | sbi->sb_cp_table = NULL; | 492 | sbi->sb_cp_table = NULL; |
489 | 493 | ||
490 | init_MUTEX(&sbi->hpfs_creation_de); | 494 | mutex_init(&sbi->hpfs_creation_de); |
491 | 495 | ||
492 | uid = current_uid(); | 496 | uid = current_uid(); |
493 | gid = current_gid(); | 497 | gid = current_gid(); |
@@ -666,6 +670,7 @@ static int hpfs_fill_super(struct super_block *s, void *options, int silent) | |||
666 | root->i_blocks = 5; | 670 | root->i_blocks = 5; |
667 | hpfs_brelse4(&qbh); | 671 | hpfs_brelse4(&qbh); |
668 | } | 672 | } |
673 | unlock_kernel(); | ||
669 | return 0; | 674 | return 0; |
670 | 675 | ||
671 | bail4: brelse(bh2); | 676 | bail4: brelse(bh2); |
@@ -677,20 +682,20 @@ bail0: | |||
677 | kfree(sbi->sb_cp_table); | 682 | kfree(sbi->sb_cp_table); |
678 | s->s_fs_info = NULL; | 683 | s->s_fs_info = NULL; |
679 | kfree(sbi); | 684 | kfree(sbi); |
685 | unlock_kernel(); | ||
680 | return -EINVAL; | 686 | return -EINVAL; |
681 | } | 687 | } |
682 | 688 | ||
683 | static int hpfs_get_sb(struct file_system_type *fs_type, | 689 | static struct dentry *hpfs_mount(struct file_system_type *fs_type, |
684 | int flags, const char *dev_name, void *data, struct vfsmount *mnt) | 690 | int flags, const char *dev_name, void *data) |
685 | { | 691 | { |
686 | return get_sb_bdev(fs_type, flags, dev_name, data, hpfs_fill_super, | 692 | return mount_bdev(fs_type, flags, dev_name, data, hpfs_fill_super); |
687 | mnt); | ||
688 | } | 693 | } |
689 | 694 | ||
690 | static struct file_system_type hpfs_fs_type = { | 695 | static struct file_system_type hpfs_fs_type = { |
691 | .owner = THIS_MODULE, | 696 | .owner = THIS_MODULE, |
692 | .name = "hpfs", | 697 | .name = "hpfs", |
693 | .get_sb = hpfs_get_sb, | 698 | .mount = hpfs_mount, |
694 | .kill_sb = kill_block_super, | 699 | .kill_sb = kill_block_super, |
695 | .fs_flags = FS_REQUIRES_DEV, | 700 | .fs_flags = FS_REQUIRES_DEV, |
696 | }; | 701 | }; |