From 030fa48b55583a1bfd2334584edc13945b56c8db Mon Sep 17 00:00:00 2001 From: David Sterba Date: Tue, 6 Sep 2016 13:52:09 +0200 Subject: [PATCH] btrfs-progs: mkfs: handle block ordering errors in make_btrfs Signed-off-by: David Sterba --- utils.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/utils.c b/utils.c index e164fdd..8a5c63e 100644 --- a/utils.c +++ b/utils.c @@ -1219,8 +1219,21 @@ int make_btrfs(int fd, struct btrfs_mkfs_config *cfg, if (!skinny_metadata) item_size += sizeof(struct btrfs_tree_block_info); - BUG_ON(cfg->blocks[i] < first_free); - BUG_ON(cfg->blocks[i] < cfg->blocks[i - 1]); + if (cfg->blocks[i] < first_free) { + error("block[%d] below first free: %llu < %llu", + i, (unsigned long long)cfg->blocks[i], + (unsigned long long)first_free); + ret = -EINVAL; + goto out; + } + if (cfg->blocks[i] < cfg->blocks[i - 1]) { + error("blocks %d and %d in reverse order: %llu < %llu", + i, i - 1, + (unsigned long long)cfg->blocks[i], + (unsigned long long)cfg->blocks[i - 1]); + ret = -EINVAL; + goto out; + } /* create extent item */ itemoff -= item_size; -- 2.7.4