From: Kees Cook <[email protected]>

In preparation for converting the kmalloc family of allocators to the
type-aware kmalloc_obj family, we need to make sure that the returned
type from the allocation matches the type of the variable being
assigned. (The kmalloc family returns "void *", which can be implicitly
cast to any pointer type.)

The assigned type is "const char **", but the converted allocation type
would be "char **", which is the same type without the const qualifier.
As there is no general way to safely add const qualifiers, take the size
from the assignment target instead. No change in allocation size
results.

Build tested ARCH=x86_64 allmodconfig with GCC 16.2.0:
sound/soc/sof/topology.o

Assisted-by: LLM coccinelle
Signed-off-by: Kees Cook <[email protected]>
---
Cc: Liam Girdwood <[email protected]>
Cc: Peter Ujfalusi <[email protected]>
Cc: Bard Liao <[email protected]>
Cc: Daniel Baluta <[email protected]>
Cc: Kai Vehmanen <[email protected]>
Cc: Pierre-Louis Bossart <[email protected]>
Cc: Vijendar Mukunda <[email protected]>
Cc: Mark Brown <[email protected]>
Cc: Jaroslav Kysela <[email protected]>
Cc: Takashi Iwai <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
---
 sound/soc/sof/topology.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c
index 8338133899ab..145bad472118 100644
--- a/sound/soc/sof/topology.c
+++ b/sound/soc/sof/topology.c
@@ -2517,7 +2517,8 @@ int snd_sof_load_topology(struct snd_soc_component 
*scomp, const char *file)
        int i;
 
        const char **tplg_files __free(kfree) =
-               kcalloc(scomp->card->num_links, sizeof(char *), GFP_KERNEL);
+               kcalloc(scomp->card->num_links, sizeof(*tplg_files),
+                       GFP_KERNEL);
        if (!tplg_files)
                return -ENOMEM;
 
-- 
2.34.1


Reply via email to