]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
pds_core: Allocate pdsc_viftype_defaults copy with ARRAY_SIZE()
authorKees Cook <kees@kernel.org>
Sat, 26 Apr 2025 06:07:13 +0000 (23:07 -0700)
committerJakub Kicinski <kuba@kernel.org>
Tue, 29 Apr 2025 17:59:09 +0000 (10:59 -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 is allocating a copy of pdsc_viftype_defaults, which is an array of
struct pdsc_viftype. To correctly return "struct pdsc_viftype *" in the
future, adjust the allocation to allocating ARRAY_SIZE-many entries. The
resulting allocation size is the same.

Signed-off-by: Kees Cook <kees@kernel.org>
Reviewed-by: Shannon Nelson <shannon.nelson@amd.com>
Link: https://patch.msgid.link/20250426060712.work.575-kees@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/amd/pds_core/core.c

index 9512aa4083f054a720e8b862f417c9ba1c3412f2..0e408f990f0b25027e3fdc990bda0126c90c4d1c 100644 (file)
@@ -414,7 +414,8 @@ static int pdsc_viftypes_init(struct pdsc *pdsc)
 {
        enum pds_core_vif_types vt;
 
-       pdsc->viftype_status = kzalloc(sizeof(pdsc_viftype_defaults),
+       pdsc->viftype_status = kcalloc(ARRAY_SIZE(pdsc_viftype_defaults),
+                                      sizeof(*pdsc->viftype_status),
                                       GFP_KERNEL);
        if (!pdsc->viftype_status)
                return -ENOMEM;