btrfs: fix error pointer dereference after failure to allocate fs devices
authorFilipe Manana <fdmanana@suse.com>
Mon, 30 Oct 2023 11:54:23 +0000 (11:54 +0000)
committerDavid Sterba <dsterba@suse.com>
Fri, 3 Nov 2023 15:40:18 +0000 (16:40 +0100)
commitcd63ffbd23edc176f09cac5c9287db732d7cbb73
tree26660b1061153c458ac8c94115e24cbd69b687fa
parent47e2b06b7b5cb356a987ba3429550c3a89ea89d6
btrfs: fix error pointer dereference after failure to allocate fs devices

At device_list_add() we allocate a btrfs_fs_devices structure and then
before checking if the allocation failed (pointer is ERR_PTR(-ENOMEM)),
we dereference the error pointer in a memcpy() argument if the feature
BTRFS_FEATURE_INCOMPAT_METADATA_UUID is enabled.
Fix this by checking for an allocation error before trying the memcpy().

Fixes: f7361d8c3fc3 ("btrfs: sipmlify uuid parameters of alloc_fs_devices()")
Reviewed-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: Anand Jain <anand.jain@oracle.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/volumes.c