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

Commit e58ca020 authored by Yan's avatar Yan Committed by Chris Mason
Browse files

Fix btrfs_fill_super to return -EINVAL when no FS found

parent 63b10fc4
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -728,9 +728,8 @@ struct btrfs_root *open_ctree(struct super_block *sb,
	struct btrfs_root *dev_root = kmalloc(sizeof(struct btrfs_root),
	struct btrfs_root *dev_root = kmalloc(sizeof(struct btrfs_root),
					      GFP_NOFS);
					      GFP_NOFS);
	int ret;
	int ret;
	int err = -EIO;
	int err = -EINVAL;
	struct btrfs_super_block *disk_super;
	struct btrfs_super_block *disk_super;

	if (!extent_root || !tree_root || !fs_info) {
	if (!extent_root || !tree_root || !fs_info) {
		err = -ENOMEM;
		err = -ENOMEM;
		goto fail;
		goto fail;
+2 −2
Original line number Original line Diff line number Diff line
@@ -236,9 +236,9 @@ static int btrfs_fill_super(struct super_block * sb,


	tree_root = open_ctree(sb, fs_devices);
	tree_root = open_ctree(sb, fs_devices);


	if (!tree_root || IS_ERR(tree_root)) {
	if (IS_ERR(tree_root)) {
		printk("btrfs: open_ctree failed\n");
		printk("btrfs: open_ctree failed\n");
		return -EIO;
		return PTR_ERR(tree_root);
	}
	}
	sb->s_fs_info = tree_root;
	sb->s_fs_info = tree_root;
	disk_super = &tree_root->fs_info->super_copy;
	disk_super = &tree_root->fs_info->super_copy;
+1 −1
Original line number Original line Diff line number Diff line
@@ -237,7 +237,7 @@ int btrfs_scan_one_device(const char *path, int flags, void *holder,
	if (strncmp((char *)(&disk_super->magic), BTRFS_MAGIC,
	if (strncmp((char *)(&disk_super->magic), BTRFS_MAGIC,
	    sizeof(disk_super->magic))) {
	    sizeof(disk_super->magic))) {
		printk("no btrfs found on %s\n", path);
		printk("no btrfs found on %s\n", path);
		ret = -ENOENT;
		ret = -EINVAL;
		goto error_brelse;
		goto error_brelse;
	}
	}
	devid = le64_to_cpu(disk_super->dev_item.devid);
	devid = le64_to_cpu(disk_super->dev_item.devid);