diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c index f038c6ef80055344cc1e0e38584d3698f89ec05d..8620dbf410c6cfebe83c49094f804290b389384e 100644 --- a/sound/soc/soc-topology.c +++ b/sound/soc/soc-topology.c @@ -832,12 +832,12 @@ static int soc_tplg_denum_create_values(struct soc_enum *se, if (ec->items > sizeof(*ec->values)) return -EINVAL; - se->dobj.control.dvalues = - kmalloc(ec->items * sizeof(u32), GFP_KERNEL); + se->dobj.control.dvalues = kmemdup(ec->values, + ec->items * sizeof(u32), + GFP_KERNEL); if (!se->dobj.control.dvalues) return -ENOMEM; - memcpy(se->dobj.control.dvalues, ec->values, ec->items * sizeof(u32)); return 0; }