fat: switch to d_make_root()
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 13 Feb 2012 03:06:33 +0000 (22:06 -0500)
committerAl Viro <viro@zeniv.linux.org.uk>
Wed, 21 Mar 2012 01:29:36 +0000 (21:29 -0400)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/fat/inode.c

index 3ab841054d533c1853f1835e1386b53c56be7447..21687e31acc03624a2934b98c3394b20a972b7a9 100644 (file)
@@ -1496,11 +1496,13 @@ int fat_fill_super(struct super_block *sb, void *data, int silent, int isvfat,
        root_inode->i_ino = MSDOS_ROOT_INO;
        root_inode->i_version = 1;
        error = fat_read_root(root_inode);
-       if (error < 0)
+       if (error < 0) {
+               iput(root_inode);
                goto out_fail;
+       }
        error = -ENOMEM;
        insert_inode_hash(root_inode);
-       sb->s_root = d_alloc_root(root_inode);
+       sb->s_root = d_make_root(root_inode);
        if (!sb->s_root) {
                fat_msg(sb, KERN_ERR, "get root inode failed");
                goto out_fail;
@@ -1516,8 +1518,6 @@ out_invalid:
 out_fail:
        if (fat_inode)
                iput(fat_inode);
-       if (root_inode)
-               iput(root_inode);
        unload_nls(sbi->nls_io);
        unload_nls(sbi->nls_disk);
        if (sbi->options.iocharset != fat_default_iocharset)