]> www.infradead.org Git - users/willy/xarray.git/commitdiff
ASoC: meson: fix memory leak of links if allocation of ldata fails
authorColin Ian King <colin.king@canonical.com>
Thu, 4 Jun 2020 17:12:16 +0000 (18:12 +0100)
committerMark Brown <broonie@kernel.org>
Fri, 5 Jun 2020 11:13:03 +0000 (12:13 +0100)
Currently if the allocation of ldata fails the error return path
does not kfree the allocated links object.  Fix this by adding
an error exit return path that performs the necessary kfree'ing.

Fixes: 7864a79f37b5 ("ASoC: meson: add axg sound card support")
Signed-off-by: Colin Ian King <colin.king@canonical.com>
Addresses-Coverity: ("Resource leak")
Link: https://lore.kernel.org/r/20200604171216.60043-1-colin.king@canonical.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/meson/meson-card-utils.c

index 2ca8c98e204f2bdf5f0d726647d814dce1f20877..5a4a91c887347f5b37574cff2f9ada7c40ba0b5b 100644 (file)
@@ -49,19 +49,26 @@ int meson_card_reallocate_links(struct snd_soc_card *card,
        links = krealloc(priv->card.dai_link,
                         num_links * sizeof(*priv->card.dai_link),
                         GFP_KERNEL | __GFP_ZERO);
+       if (!links)
+               goto err_links;
+
        ldata = krealloc(priv->link_data,
                         num_links * sizeof(*priv->link_data),
                         GFP_KERNEL | __GFP_ZERO);
-
-       if (!links || !ldata) {
-               dev_err(priv->card.dev, "failed to allocate links\n");
-               return -ENOMEM;
-       }
+       if (!ldata)
+               goto err_ldata;
 
        priv->card.dai_link = links;
        priv->link_data = ldata;
        priv->card.num_links = num_links;
        return 0;
+
+err_ldata:
+       kfree(links);
+err_links:
+       dev_err(priv->card.dev, "failed to allocate links\n");
+       return -ENOMEM;
+
 }
 EXPORT_SYMBOL_GPL(meson_card_reallocate_links);