diff options
author | Srinivas Kandagatla <srinivas.kandagatla@linaro.org> | 2015-06-09 14:34:21 +0100 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-06-09 17:18:58 +0100 |
commit | 21e904bcf9b2e57e0599e9dddff558ffd0ce5f59 (patch) | |
tree | 1c7917db32a57f7ee9ebf97455a80c010018586f | |
parent | 6cc8ae94813dffe7ff5ba88da0fe25a697e3e8a3 (diff) | |
download | lwn-21e904bcf9b2e57e0599e9dddff558ffd0ce5f59.tar.gz lwn-21e904bcf9b2e57e0599e9dddff558ffd0ce5f59.zip |
ASoC: qcom: storm: allocate snd_soc_card struct dynamically.
This patch moves static allocation of snd_soc_card to dynamic allocation,
the reason to do this is to avoid holding up any dangling pointers
in this static structures. And I see no use for having this struct as static
given that the card->name is also populated dynamically from dt.
Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r-- | sound/soc/qcom/storm.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/sound/soc/qcom/storm.c b/sound/soc/qcom/storm.c index b8bd296190ad..ee0661377672 100644 --- a/sound/soc/qcom/storm.c +++ b/sound/soc/qcom/storm.c @@ -69,11 +69,6 @@ static struct snd_soc_dai_link storm_dai_link = { .ops = &storm_soc_ops, }; -static struct snd_soc_card storm_soc_card = { - .name = "ipq806x-storm", - .dev = NULL, -}; - static int storm_parse_of(struct snd_soc_card *card) { struct snd_soc_dai_link *dai_link = card->dai_link; @@ -99,14 +94,13 @@ static int storm_parse_of(struct snd_soc_card *card) static int storm_platform_probe(struct platform_device *pdev) { - struct snd_soc_card *card = &storm_soc_card; + struct snd_soc_card *card; int ret; - if (card->dev) { - dev_err(&pdev->dev, "%s() error, existing soundcard\n", - __func__); - return -ENODEV; - } + card = devm_kzalloc(&pdev->dev, sizeof(*card), GFP_KERNEL); + if (!card) + return -ENOMEM; + card->dev = &pdev->dev; platform_set_drvdata(pdev, card); @@ -129,7 +123,6 @@ static int storm_platform_probe(struct platform_device *pdev) ret = devm_snd_soc_register_card(&pdev->dev, card); if (ret == -EPROBE_DEFER) { - card->dev = NULL; return ret; } else if (ret) { dev_err(&pdev->dev, "%s() error registering soundcard: %d\n", |