diff options
author | Mark Brown <broonie@linaro.org> | 2013-07-31 22:07:23 +0200 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-07-31 22:07:23 +0200 |
commit | 3fef7f795fff7ccc58d55a28315ca73305515884 (patch) | |
tree | f3c5eaa12bf091e9d10bacb205886c3d68b5b671 /sound | |
parent | Merge remote-tracking branch 'asoc/fix/dapm' into asoc-linus (diff) | |
parent | ASoC: wm0010: Fix resource leak (diff) | |
download | linux-3fef7f795fff7ccc58d55a28315ca73305515884.tar.xz linux-3fef7f795fff7ccc58d55a28315ca73305515884.zip |
Merge remote-tracking branch 'asoc/fix/wm0010' into asoc-linus
Diffstat (limited to 'sound')
-rw-r--r-- | sound/soc/codecs/wm0010.c | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/sound/soc/codecs/wm0010.c b/sound/soc/codecs/wm0010.c index f5e835662cdc..10adc4145d46 100644 --- a/sound/soc/codecs/wm0010.c +++ b/sound/soc/codecs/wm0010.c @@ -410,6 +410,16 @@ static int wm0010_firmware_load(const char *name, struct snd_soc_codec *codec) rec->command, rec->length); len = rec->length + 8; + xfer = kzalloc(sizeof(*xfer), GFP_KERNEL); + if (!xfer) { + dev_err(codec->dev, "Failed to allocate xfer\n"); + ret = -ENOMEM; + goto abort; + } + + xfer->codec = codec; + list_add_tail(&xfer->list, &xfer_list); + out = kzalloc(len, GFP_KERNEL); if (!out) { dev_err(codec->dev, @@ -417,6 +427,7 @@ static int wm0010_firmware_load(const char *name, struct snd_soc_codec *codec) ret = -ENOMEM; goto abort1; } + xfer->t.rx_buf = out; img = kzalloc(len, GFP_KERNEL); if (!img) { @@ -425,24 +436,13 @@ static int wm0010_firmware_load(const char *name, struct snd_soc_codec *codec) ret = -ENOMEM; goto abort1; } + xfer->t.tx_buf = img; byte_swap_64((u64 *)&rec->command, img, len); - xfer = kzalloc(sizeof(*xfer), GFP_KERNEL); - if (!xfer) { - dev_err(codec->dev, "Failed to allocate xfer\n"); - ret = -ENOMEM; - goto abort1; - } - - xfer->codec = codec; - list_add_tail(&xfer->list, &xfer_list); - spi_message_init(&xfer->m); xfer->m.complete = wm0010_boot_xfer_complete; xfer->m.context = xfer; - xfer->t.tx_buf = img; - xfer->t.rx_buf = out; xfer->t.len = len; xfer->t.bits_per_word = 8; |