btrfs-progs: corrupt-block: fix memory leak in debug_corrupt_sector()
ASAN build (make D=asan) detects a memory leak in btrfs-corrupt-block inside debug_corrupt_sector(). This can be reproduced by fsck/013 test case. The cause is pretty simple, we just malloc a sector and forgot to free it. Issue: #806 Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
5644dc5d18
commit
fd5a80e5bf
|
@ -70,7 +70,7 @@ static int debug_corrupt_sector(struct btrfs_root *root, u64 logical, int mirror
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
errno = -ret;
|
errno = -ret;
|
||||||
error("cannot read bytenr %llu: %m", logical);
|
error("cannot read bytenr %llu: %m", logical);
|
||||||
return ret;
|
goto out;
|
||||||
}
|
}
|
||||||
printf("corrupting %llu copy %d\n", logical, mirror_num);
|
printf("corrupting %llu copy %d\n", logical, mirror_num);
|
||||||
memset(buf, 0, sectorsize);
|
memset(buf, 0, sectorsize);
|
||||||
|
@ -78,7 +78,7 @@ static int debug_corrupt_sector(struct btrfs_root *root, u64 logical, int mirror
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
errno = -ret;
|
errno = -ret;
|
||||||
error("cannot write bytenr %llu: %m", logical);
|
error("cannot write bytenr %llu: %m", logical);
|
||||||
return ret;
|
goto out;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +90,8 @@ static int debug_corrupt_sector(struct btrfs_root *root, u64 logical, int mirror
|
||||||
if (mirror_num > num_copies)
|
if (mirror_num > num_copies)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
out:
|
||||||
|
free(buf);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue