ASoC: wm0010: Fix resource leak
Subsystems (3)
PATCH 1/1 ASoC: wm0010: Fix resource leak
This fixes "https://bugzilla.kernel.org/show_bug.cgi?id=60650".
--- sound/soc/codecs/wm0010.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)
sound/soc/codecs/wm0010.c +9 -9
@@ -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 ;
Signature · 1 line
1.8.3.4
Mark Brown
maintainersound/soc/codecs/wm0010.c static int wm0010_firmware_load(const char *name, struct snd_soc_codec *codec) · line 419
Quoted 7 lines · Dimitris Papastamos
sound/soc/codecs/wm0010.c +7
-0+ 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.
Quoted 12 lines · Mark Brown
sound/soc/codecs/wm0010.c static int wm0010_firmware_load(const char *name, struct snd_soc_codec *codec) · line 419
Quoted 7 lines · Dimitris Papastamos
sound/soc/codecs/wm0010.c +7
-0+ 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.
Quoted 2 lines
Please also provide a changelog, a link to some address on the web isn't a useful description.
Will do.
Quoted 14 lines · Dimitris Papastamos
Quoted 12 lines · Mark Brown
sound/soc/codecs/wm0010.c static int wm0010_firmware_load(const char *name, struct snd_soc_codec *codec) · line 419
Quoted 7 lines · Dimitris Papastamos
sound/soc/codecs/wm0010.c +7
-0+ 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.
Quoted 2 lines
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.