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

Commit 86e06008 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull btrfs updates from Chris Mason:
 "I have two additional and btrfs fixes in my for-linus branch.  One is
  a casting error that leads to memory corruption on i386 during scrub,
  and the other fixes a corner case in the backref walking code (also
  triggered by scrub)."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
  Btrfs: fix casting error in scrub reada code
  btrfs: fix locking issues in find_parent_nodes()
parents be22aece a175423c
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -583,7 +583,7 @@ static int find_parent_nodes(struct btrfs_trans_handle *trans,
	struct btrfs_path *path;
	struct btrfs_key info_key = { 0 };
	struct btrfs_delayed_ref_root *delayed_refs = NULL;
	struct btrfs_delayed_ref_head *head = NULL;
	struct btrfs_delayed_ref_head *head;
	int info_level = 0;
	int ret;
	struct list_head prefs_delayed;
@@ -607,6 +607,8 @@ static int find_parent_nodes(struct btrfs_trans_handle *trans,
	 * at a specified point in time
	 */
again:
	head = NULL;

	ret = btrfs_search_slot(trans, fs_info->extent_root, &key, path, 0, 0);
	if (ret < 0)
		goto out;
@@ -635,9 +637,11 @@ again:
			goto again;
		}
		ret = __add_delayed_refs(head, seq, &info_key, &prefs_delayed);
		if (ret)
		if (ret) {
			spin_unlock(&delayed_refs->lock);
			goto out;
		}
	}
	spin_unlock(&delayed_refs->lock);

	if (path->slots[0]) {
+1 −1
Original line number Diff line number Diff line
@@ -305,7 +305,7 @@ again:

	spin_lock(&fs_info->reada_lock);
	ret = radix_tree_insert(&dev->reada_zones,
				(unsigned long)zone->end >> PAGE_CACHE_SHIFT,
				(unsigned long)(zone->end >> PAGE_CACHE_SHIFT),
				zone);
	spin_unlock(&fs_info->reada_lock);