[alsa-devel] [PATCH] ASoC: wm0010: Fix resource leak
This fixes "https://bugzilla.kernel.org/show_bug.cgi?id=60650".
Signed-off-by: Dimitris Papastamos dp@opensource.wolfsonmicro.com --- sound/soc/codecs/wm0010.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/sound/soc/codecs/wm0010.c b/sound/soc/codecs/wm0010.c index f5e8356..285026c 100644 --- a/sound/soc/codecs/wm0010.c +++ b/sound/soc/codecs/wm0010.c @@ -410,6 +410,13 @@ 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 | GFP_DMA); + if (!xfer) { + dev_err(codec->dev, "Failed to allocate xfer\n"); + ret = -ENOMEM; + goto abort1; + } + out = kzalloc(len, GFP_KERNEL); if (!out) { dev_err(codec->dev, @@ -417,6 +424,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 +433,16 @@ 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;
On Wed, Jul 31, 2013 at 10:15:18AM +0100, Dimitris Papastamos wrote:
xfer = kzalloc(sizeof(*xfer), GFP_KERNEL | GFP_DMA);
if (!xfer) {
dev_err(codec->dev, "Failed to allocate xfer\n");
ret = -ENOMEM;
goto abort1;
}
Why is this being allocated with GFP_DMA? It's an internal data structure, it's not going to be DMAed from.
Please also provide a changelog, a link to some address on the web isn't a useful description.
On Wed, Jul 31, 2013 at 12:23:31PM +0100, Mark Brown wrote:
On Wed, Jul 31, 2013 at 10:15:18AM +0100, Dimitris Papastamos wrote:
xfer = kzalloc(sizeof(*xfer), GFP_KERNEL | GFP_DMA);
if (!xfer) {
dev_err(codec->dev, "Failed to allocate xfer\n");
ret = -ENOMEM;
goto abort1;
}
Why is this being allocated with GFP_DMA? It's an internal data structure, it's not going to be DMAed from.
Yeah I will send a separate patch to fix that and then rebase this patch on top.
Please also provide a changelog, a link to some address on the web isn't a useful description.
Will do.
On Wed, Jul 31, 2013 at 01:00:25PM +0100, Dimitris Papastamos wrote:
On Wed, Jul 31, 2013 at 12:23:31PM +0100, Mark Brown wrote:
On Wed, Jul 31, 2013 at 10:15:18AM +0100, Dimitris Papastamos wrote:
xfer = kzalloc(sizeof(*xfer), GFP_KERNEL | GFP_DMA);
if (!xfer) {
dev_err(codec->dev, "Failed to allocate xfer\n");
ret = -ENOMEM;
goto abort1;
}
Why is this being allocated with GFP_DMA? It's an internal data structure, it's not going to be DMAed from.
Yeah I will send a separate patch to fix that and then rebase this patch on top.
Aw just noticed, this is basically a git am conflict that I resolved incorrectly.
participants (2)
-
Dimitris Papastamos
-
Mark Brown