mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 20:48:49 +08:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs
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()
This commit is contained in:
commit
86e0600833
@ -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,8 +637,10 @@ 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);
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user