Message ID | 5088AB08.9080902@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
diff --git a/disk-io.c b/disk-io.c index 0395205..3a80284 100644 --- a/disk-io.c +++ b/disk-io.c @@ -456,11 +456,15 @@ static int find_and_setup_log_root(struct btrfs_root *tree_root, { u32 blocksize; u64 blocknr = btrfs_super_log_root(disk_super); - struct btrfs_root *log_root = malloc(sizeof(struct btrfs_root)); + struct btrfs_root *log_root = NULL; if (blocknr == 0) return 0; + log_root = malloc(sizeof(struct btrfs_root)); + if (!log_root) + return -ENOMEM; + blocksize = btrfs_level_size(tree_root, btrfs_super_log_root_level(disk_super));
In find_and_setup_log_root, the malloced log_root would be leaked if we have bytenr = 0, which would happen at our mkfs stage. Move the memory allocation after the bytenr check, and add allocation failure check. Signed-off-by: Wang Sheng-Hui <shhuiw@gmail.com> --- disk-io.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)