Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2309fb8e authored by Al Viro's avatar Al Viro
Browse files

cramfs: get rid of ->put_super()



failure exits are simpler that way

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 842a859d
Loading
Loading
Loading
Loading
+12 −16
Original line number Diff line number Diff line
@@ -219,10 +219,11 @@ static void *cramfs_read(struct super_block *sb, unsigned int offset, unsigned i
	return read_buffers[buffer] + offset;
}

static void cramfs_put_super(struct super_block *sb)
static void cramfs_kill_sb(struct super_block *sb)
{
	kfree(sb->s_fs_info);
	sb->s_fs_info = NULL;
	struct cramfs_sb_info *sbi = sb->s_fs_info;
	kill_block_super(sb);
	kfree(sbi);
}

static int cramfs_remount(struct super_block *sb, int *flags, char *data)
@@ -261,7 +262,7 @@ static int cramfs_fill_super(struct super_block *sb, void *data, int silent)
		if (super.magic == CRAMFS_MAGIC_WEND) {
			if (!silent)
				printk(KERN_ERR "cramfs: wrong endianness\n");
			goto out;
			return -EINVAL;
		}

		/* check at 512 byte offset */
@@ -273,20 +274,20 @@ static int cramfs_fill_super(struct super_block *sb, void *data, int silent)
				printk(KERN_ERR "cramfs: wrong endianness\n");
			else if (!silent)
				printk(KERN_ERR "cramfs: wrong magic\n");
			goto out;
			return -EINVAL;
		}
	}

	/* get feature flags first */
	if (super.flags & ~CRAMFS_SUPPORTED_FLAGS) {
		printk(KERN_ERR "cramfs: unsupported filesystem features\n");
		goto out;
		return -EINVAL;
	}

	/* Check that the root inode is in a sane state */
	if (!S_ISDIR(super.root.mode)) {
		printk(KERN_ERR "cramfs: root is not a directory\n");
		goto out;
		return -EINVAL;
	}
	/* correct strange, hard-coded permissions of mkcramfs */
	super.root.mode |= (S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
@@ -310,22 +311,18 @@ static int cramfs_fill_super(struct super_block *sb, void *data, int silent)
		  (root_offset != 512 + sizeof(struct cramfs_super))))
	{
		printk(KERN_ERR "cramfs: bad root offset %lu\n", root_offset);
		goto out;
		return -EINVAL;
	}

	/* Set it all up.. */
	sb->s_op = &cramfs_ops;
	root = get_cramfs_inode(sb, &super.root, 0);
	if (IS_ERR(root))
		goto out;
		return PTR_ERR(root);
	sb->s_root = d_make_root(root);
	if (!sb->s_root)
		goto out;
		return -ENOMEM;
	return 0;
out:
	kfree(sbi);
	sb->s_fs_info = NULL;
	return -EINVAL;
}

static int cramfs_statfs(struct dentry *dentry, struct kstatfs *buf)
@@ -550,7 +547,6 @@ static const struct inode_operations cramfs_dir_inode_operations = {
};

static const struct super_operations cramfs_ops = {
	.put_super	= cramfs_put_super,
	.remount_fs	= cramfs_remount,
	.statfs		= cramfs_statfs,
};
@@ -565,7 +561,7 @@ static struct file_system_type cramfs_fs_type = {
	.owner		= THIS_MODULE,
	.name		= "cramfs",
	.mount		= cramfs_mount,
	.kill_sb	= kill_block_super,
	.kill_sb	= cramfs_kill_sb,
	.fs_flags	= FS_REQUIRES_DEV,
};
MODULE_ALIAS_FS("cramfs");