summaryrefslogtreecommitdiff
path: root/cmds-check.c
diff options
context:
space:
mode:
authorChristophe de Dinechin <dinechin@redhat.com>2017-04-28 11:50:23 +0200
committerDavid Sterba <dsterba@suse.com>2017-05-02 19:01:50 +0200
commit05011bf0d49d6b7e4ec5c2ac6c0181544f3a5b85 (patch)
tree8ab2de7b35399d93f6b00d4055019a116918e916 /cmds-check.c
parent53a88b50eae3d8f960a992e0aad8480c3732ee10 (diff)
btrfs-progs: check: prevent attempt to insert extent record with max_size==0
When this happens, we will trip a BUG_ON(end < start) in insert_state because in check_extent_refs, we use this max_size expecting it's not zero: set_extent_dirty(root->fs_info->excluded_extents, rec->start, rec->start + rec->max_size - 1); See https://bugzilla.redhat.com/show_bug.cgi?id=1435567 for an example where this scenario occurs. Signed-off-by: Christophe de Dinechin <dinechin@redhat.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'cmds-check.c')
-rw-r--r--cmds-check.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/cmds-check.c b/cmds-check.c
index e8251198..571bd4e2 100644
--- a/cmds-check.c
+++ b/cmds-check.c
@@ -6030,6 +6030,7 @@ static int add_extent_rec_nolookup(struct cache_tree *extent_cache,
struct extent_record *rec;
int ret = 0;
+ BUG_ON(tmpl->max_size == 0);
rec = malloc(sizeof(*rec));
if (!rec)
return -ENOMEM;