Commit ddd664f4 authored by Luis de Bethencourt's avatar Luis de Bethencourt Committed by David Sterba

btrfs: reada: Fix returned errno code

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: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarLuis de Bethencourt <luisbg@osg.samsung.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 0b8d8ce0
...@@ -569,7 +569,7 @@ static int reada_add_block(struct reada_control *rc, u64 logical, ...@@ -569,7 +569,7 @@ static int reada_add_block(struct reada_control *rc, u64 logical,
rec = kzalloc(sizeof(*rec), GFP_NOFS); rec = kzalloc(sizeof(*rec), GFP_NOFS);
if (!rec) { if (!rec) {
reada_extent_put(root->fs_info, re); reada_extent_put(root->fs_info, re);
return -1; return -ENOMEM;
} }
rec->rc = rc; rec->rc = rc;
...@@ -918,6 +918,7 @@ struct reada_control *btrfs_reada_add(struct btrfs_root *root, ...@@ -918,6 +918,7 @@ struct reada_control *btrfs_reada_add(struct btrfs_root *root,
u64 start; u64 start;
u64 generation; u64 generation;
int level; int level;
int ret;
struct extent_buffer *node; struct extent_buffer *node;
static struct btrfs_key max_key = { static struct btrfs_key max_key = {
.objectid = (u64)-1, .objectid = (u64)-1,
...@@ -943,9 +944,10 @@ struct reada_control *btrfs_reada_add(struct btrfs_root *root, ...@@ -943,9 +944,10 @@ struct reada_control *btrfs_reada_add(struct btrfs_root *root,
generation = btrfs_header_generation(node); generation = btrfs_header_generation(node);
free_extent_buffer(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); kfree(rc);
return ERR_PTR(-ENOMEM); return ERR_PTR(ret);
} }
reada_start_machine(root->fs_info); reada_start_machine(root->fs_info);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment