mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-07 17:27:11 -04:00
ASoC: SOF: topology: Use kmemdup_array instead of kmemdup for multiple allocation
Let the kmemdup_array() take care about multiplication and possible overflows. Using kmemdup_array() is more appropriate and makes the code easier to audit. Signed-off-by: Shen Lichuan <shenlichuan@vivo.com> Link: https://patch.msgid.link/20240826054402.58396-1-shenlichuan@vivo.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
@@ -1349,7 +1349,7 @@ static int sof_parse_pin_binding(struct snd_sof_widget *swidget,
|
||||
|
||||
/* copy pin binding array to swidget only if it is defined in topology */
|
||||
if (pin_binding[0]) {
|
||||
pb = kmemdup(pin_binding, num_pins * sizeof(char *), GFP_KERNEL);
|
||||
pb = kmemdup_array(pin_binding, num_pins, sizeof(char *), GFP_KERNEL);
|
||||
if (!pb) {
|
||||
ret = -ENOMEM;
|
||||
goto err;
|
||||
@@ -1889,9 +1889,9 @@ static int sof_link_load(struct snd_soc_component *scomp, int index, struct snd_
|
||||
return -ENOMEM;
|
||||
|
||||
slink->num_hw_configs = le32_to_cpu(cfg->num_hw_configs);
|
||||
slink->hw_configs = kmemdup(cfg->hw_config,
|
||||
sizeof(*slink->hw_configs) * slink->num_hw_configs,
|
||||
GFP_KERNEL);
|
||||
slink->hw_configs = kmemdup_array(cfg->hw_config,
|
||||
slink->num_hw_configs, sizeof(*slink->hw_configs),
|
||||
GFP_KERNEL);
|
||||
if (!slink->hw_configs) {
|
||||
kfree(slink);
|
||||
return -ENOMEM;
|
||||
|
||||
Reference in New Issue
Block a user