btrfs-progs: use alloc_dummy_extent_buffer() for temporary super block
[FALSE ALERT] There is a false alert when compiling btrfs-progs using gcc 12.2.1: $ make D=1 kernel-shared/print-tree.c: In function 'print_sys_chunk_array': kernel-shared/print-tree.c:1797:9: warning: 'buf' may be used uninitialized [-Wmaybe-uninitialized] 1797 | write_extent_buffer(buf, sb, 0, sizeof(*sb)); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from ./kernel-shared/ctree.h:27, from kernel-shared/print-tree.c:24: ./kernel-shared/extent_io.h:148:6: note: by argument 1 of type 'const struct extent_buffer *' to 'write_extent_buffer' declared here 148 | void write_extent_buffer(const struct extent_buffer *eb, const void *src, | ^~~~~~~~~~~~~~~~~~~ [CAUSE] This is a false alert, the uninitialized part of buf will not be utilized at all during write_extent_buffer(). [FIX] Instead of allocating such ad-hoc buffer, go a more formal way by calling alloc_dummy_extent_buffer(), which would properly set all the members. Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
788e30f7ea
commit
6c7a6dba95
|
@ -1789,7 +1789,7 @@ static void print_sys_chunk_array(struct btrfs_super_block *sb)
|
|||
struct btrfs_key key;
|
||||
int item;
|
||||
|
||||
buf = malloc(sizeof(*buf) + sizeof(*sb));
|
||||
buf = alloc_dummy_extent_buffer(NULL, 0, BTRFS_SUPER_INFO_SIZE);
|
||||
if (!buf) {
|
||||
error_msg(ERROR_MSG_MEMORY, NULL);
|
||||
return;
|
||||
|
@ -1860,13 +1860,13 @@ static void print_sys_chunk_array(struct btrfs_super_block *sb)
|
|||
}
|
||||
|
||||
out:
|
||||
free(buf);
|
||||
free_extent_buffer(buf);
|
||||
return;
|
||||
|
||||
out_short_read:
|
||||
error("sys_array too short to read %u bytes at offset %u",
|
||||
len, cur_offset);
|
||||
free(buf);
|
||||
free_extent_buffer(buf);
|
||||
}
|
||||
|
||||
static int empty_backup(struct btrfs_root_backup *backup)
|
||||
|
|
Loading…
Reference in New Issue