From: Kees Cook In preparation for making the devm_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 room for a copy of ikpu_action_entries, which is an array of struct npc_kpu_profile_action, but it asked for a single object the size of the whole array, which would make the allocation type a pointer to the array rather than the "struct npc_kpu_profile_action *" being assigned. Allocate ARRAY_SIZE-many entries instead. The resulting allocation size is the same. Build tested ARCH=x86_64 allmodconfig with GCC 16.2.0: drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.o Assisted-by: LLM coccinelle Signed-off-by: Kees Cook --- Cc: Sunil Goutham Cc: Ratheesh Kannoth Cc: Geetha sowjanya Cc: Subbaraya Sundeep Cc: Andrew Lunn Cc: "David S. Miller" Cc: Eric Dumazet Cc: Jakub Kicinski Cc: Paolo Abeni Cc: --- drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c index c34f8d86cc8a..42a601976db3 100644 --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c @@ -1959,8 +1959,9 @@ static int npc_apply_custom_kpu_from_fs(struct rvu *rvu, fw = rvu->kpu_fwdata; /* Binary blob contains ikpu actions entries at start of data[0] */ - profile->ikpu2 = devm_kcalloc(rvu->dev, 1, - sizeof(ikpu_action_entries), + profile->ikpu2 = devm_kcalloc(rvu->dev, + ARRAY_SIZE(ikpu_action_entries), + sizeof(*profile->ikpu2), GFP_KERNEL); if (!profile->ikpu2) return -ENOMEM; -- 2.34.1