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 types of mbc_texts, vss_texts, vss_hpf_texts, and
enh_eq_texts are "const char **", but the converted allocation types
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
sizes from the assignment targets instead. No change in allocation size
results.

Build tested ARCH=x86_64 allmodconfig with GCC 16.2.0:
sound/soc/codecs/wm8958-dsp2.o

Assisted-by: LLM coccinelle
Signed-off-by: Kees Cook <[email protected]>
---
Cc: Liam Girdwood <[email protected]>
Cc: Mark Brown <[email protected]>
Cc: Jaroslav Kysela <[email protected]>
Cc: Takashi Iwai <[email protected]>
Cc: Richard Fitzgerald <[email protected]>
Cc: Cezary Rojewski <[email protected]>
Cc: Kuninori Morimoto <[email protected]>
Cc: bui duc phuc <[email protected]>
Cc: Al Viro <[email protected]>
Cc: <[email protected]>
Cc: <[email protected]>
---
 sound/soc/codecs/wm8958-dsp2.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/sound/soc/codecs/wm8958-dsp2.c b/sound/soc/codecs/wm8958-dsp2.c
index f75a6dc9d2bb..b26c36ca8249 100644
--- a/sound/soc/codecs/wm8958-dsp2.c
+++ b/sound/soc/codecs/wm8958-dsp2.c
@@ -928,7 +928,7 @@ void wm8958_dsp2_init(struct snd_soc_component *component)
 
                /* We need an array of texts for the enum API */
                wm8994->mbc_texts = kmalloc_array(pdata->num_mbc_cfgs,
-                                                 sizeof(char *),
+                                                 sizeof(*wm8994->mbc_texts),
                                                  GFP_KERNEL);
                if (!wm8994->mbc_texts)
                        return;
@@ -954,7 +954,7 @@ void wm8958_dsp2_init(struct snd_soc_component *component)
 
                /* We need an array of texts for the enum API */
                wm8994->vss_texts = kmalloc_array(pdata->num_vss_cfgs,
-                                                 sizeof(char *),
+                                                 sizeof(*wm8994->vss_texts),
                                                  GFP_KERNEL);
                if (!wm8994->vss_texts)
                        return;
@@ -981,7 +981,7 @@ void wm8958_dsp2_init(struct snd_soc_component *component)
 
                /* We need an array of texts for the enum API */
                wm8994->vss_hpf_texts = kmalloc_array(pdata->num_vss_hpf_cfgs,
-                                                     sizeof(char *),
+                                                     
sizeof(*wm8994->vss_hpf_texts),
                                                      GFP_KERNEL);
                if (!wm8994->vss_hpf_texts)
                        return;
@@ -1009,7 +1009,7 @@ void wm8958_dsp2_init(struct snd_soc_component *component)
 
                /* We need an array of texts for the enum API */
                wm8994->enh_eq_texts = kmalloc_array(pdata->num_enh_eq_cfgs,
-                                                    sizeof(char *),
+                                                    
sizeof(*wm8994->enh_eq_texts),
                                                     GFP_KERNEL);
                if (!wm8994->enh_eq_texts)
                        return;
-- 
2.34.1


Reply via email to