]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ipv4: fib: Fix fib_info_hash_alloc() allocation type
authorKees Cook <kees@kernel.org>
Sat, 26 Apr 2025 06:05:30 +0000 (23:05 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 29 Apr 2025 17:44:17 +0000 (10:44 -0700)
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.)

This was allocating many sizeof(struct hlist_head *) when it actually
wanted sizeof(struct hlist_head). Luckily these are the same size.
Adjust the allocation type to match the assignment.

Signed-off-by: Kees Cook <kees@kernel.org>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: David Ahern <dsahern@kernel.org>
Reviewed-by: Kuniyuki Iwashima <kuniyu@amazon.com>
Link: https://patch.msgid.link/20250426060529.work.873-kees@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/ipv4/fib_semantics.c

index 2371f311a1e1428c4ba06f7f9181b508d70a4504..03959c60d1285fa75285bacd7a7e0ae72b004c9d 100644 (file)
@@ -365,7 +365,7 @@ static struct hlist_head *fib_info_laddrhash_bucket(const struct net *net,
 static struct hlist_head *fib_info_hash_alloc(unsigned int hash_bits)
 {
        /* The second half is used for prefsrc */
-       return kvcalloc((1 << hash_bits) * 2, sizeof(struct hlist_head *),
+       return kvcalloc((1 << hash_bits) * 2, sizeof(struct hlist_head),
                        GFP_KERNEL);
 }