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

Commit 103e9766 authored by Jan Schmidt's avatar Jan Schmidt
Browse files

Btrfs: check return value of btrfs_cow_block()



The two helper functions commit_cowonly_roots() and
create_pending_snapshot() failed to check the return value from
btrfs_cow_block(), which could at least in theory fail with -ENOSPC from
btrfs_alloc_free_block(). This commit adds the missing checks.

Signed-off-by: default avatarJan Schmidt <list.btrfs@jan-o-sch.net>
parent e565d4b9
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -718,7 +718,8 @@ static noinline int commit_cowonly_roots(struct btrfs_trans_handle *trans,
	BUG_ON(ret);

	eb = btrfs_lock_root_node(fs_info->tree_root);
	btrfs_cow_block(trans, fs_info->tree_root, eb, NULL, 0, &eb);
	ret = btrfs_cow_block(trans, fs_info->tree_root, eb, NULL, 0, &eb);
	BUG_ON(ret);
	btrfs_tree_unlock(eb);
	free_extent_buffer(eb);

@@ -949,7 +950,8 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
	btrfs_set_root_flags(new_root_item, root_flags);

	old = btrfs_lock_root_node(root);
	btrfs_cow_block(trans, root, old, NULL, 0, &old);
	ret = btrfs_cow_block(trans, root, old, NULL, 0, &old);
	BUG_ON(ret);
	btrfs_set_lock_blocking(old);

	btrfs_copy_root(trans, root, old, &tmp, objectid);