Btrfs: add missing error checks to add_data_references
PATCH 1/1 Btrfs: add missing error checks to add_data_references
The function relocation.c:add_data_references() was not checking if all calls to __add_tree_block() and find_data_references() were succeeding or not.
Signed-off-by Filipe David Borba Manana <[email protected]>
--- fs/btrfs/relocation.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
fs/btrfs/relocation.c +6 -1
@@ -3628,7 +3628,7 @@ int add_data_references(struct reloc_control *rc,unsigned long ptr;unsigned long end;u32 blocksize =btrfs_level_size (rc->extent_root,0 ); -int ret; +int ret =0 ;int err =0 ; eb = path->nodes[0 ];
@@ -3655,6 +3655,10 @@ int add_data_references(struct reloc_control *rc, }else {BUG (); } +if (ret) { + err = ret; + goto out; + } ptr +=btrfs_extent_inline_ref_size (key.type); }WARN_ON (ptr > end);
@@ -3700,6 +3704,7 @@ int add_data_references(struct reloc_control *rc, } path->slots[0 ]++; } +out:btrfs_release_path (path);if (err)free_block_list (blocks);
Signature · 1 line
1.7.9.5
Quoted 5 lines · Filipe David Borba Manana
The function relocation.c:add_data_references() was not checking if all calls to
__add_tree_block()andfind_data_references()were succeeding or not.Signed-off-by Filipe David Borba Manana <[email protected]>
Reviewed-by David Sterba <[email protected]>