]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
btrfs: compression: adjust cb->compressed_folios allocation type
authorKees Cook <kees@kernel.org>
Sat, 26 Apr 2025 06:23:29 +0000 (23:23 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 29 May 2025 09:13:53 +0000 (11:13 +0200)
[ Upstream commit 6f9a8ab796c6528d22de3c504c81fce7dde63d8a ]

In preparation for making the kmalloc() family of allocators type aware,
we need to make sure that the returned type from the allocation matches
the type of the variable being assigned. (Before, the allocator would
always return "void *", which can be implicitly cast to any pointer type.)

The assigned type is "struct folio **" but the returned type will be
"struct page **". These are the same allocation size (pointer size), but
the types don't match. Adjust the allocation type to match the assignment.

Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Kees Cook <kees@kernel.org>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
fs/btrfs/compression.c

index 0c4d486c3048da65f7d39dc535332a8f70e68aef..18d2210dc724960d344d05baf7b7b36e8d33905a 100644 (file)
@@ -606,7 +606,7 @@ void btrfs_submit_compressed_read(struct btrfs_bio *bbio)
        free_extent_map(em);
 
        cb->nr_folios = DIV_ROUND_UP(compressed_len, PAGE_SIZE);
-       cb->compressed_folios = kcalloc(cb->nr_folios, sizeof(struct page *), GFP_NOFS);
+       cb->compressed_folios = kcalloc(cb->nr_folios, sizeof(struct folio *), GFP_NOFS);
        if (!cb->compressed_folios) {
                ret = BLK_STS_RESOURCE;
                goto out_free_bio;