Skip to content

Commit

Permalink
btrfs: reada: Fix returned errno code
Browse files Browse the repository at this point in the history
reada is using -1 instead of the -ENOMEM defined macro to specify that
a buffer allocation failed. Since the error number is propagated, the
caller will get a -EPERM which is the wrong error condition.

Also, updating the caller to return the exact value from
reada_add_block.

Smatch tool warning:
reada_add_block() warn: returning -1 instead of -ENOMEM is sloppy

Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: Luis de Bethencourt <luisbg@osg.samsung.com>
Signed-off-by: David Sterba <dsterba@suse.com>
  • Loading branch information
Luis de Bethencourt authored and David Sterba committed Oct 21, 2015
1 parent 0b8d8ce commit ddd664f
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions fs/btrfs/reada.c
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,7 @@ static int reada_add_block(struct reada_control *rc, u64 logical,
rec = kzalloc(sizeof(*rec), GFP_NOFS);
if (!rec) {
reada_extent_put(root->fs_info, re);
return -1;
return -ENOMEM;
}

rec->rc = rc;
Expand Down Expand Up @@ -918,6 +918,7 @@ struct reada_control *btrfs_reada_add(struct btrfs_root *root,
u64 start;
u64 generation;
int level;
int ret;
struct extent_buffer *node;
static struct btrfs_key max_key = {
.objectid = (u64)-1,
Expand All @@ -943,9 +944,10 @@ struct reada_control *btrfs_reada_add(struct btrfs_root *root,
generation = btrfs_header_generation(node);
free_extent_buffer(node);

if (reada_add_block(rc, start, &max_key, level, generation)) {
ret = reada_add_block(rc, start, &max_key, level, generation);
if (ret) {
kfree(rc);
return ERR_PTR(-ENOMEM);
return ERR_PTR(ret);
}

reada_start_machine(root->fs_info);
Expand Down

0 comments on commit ddd664f

Please sign in to comment.