Commit 1064bc68 authored by Takashi Sakamoto's avatar Takashi Sakamoto Committed by Takashi Iwai

ALSA: oxfw: fix memory leak of discovered stream formats at error path

After finishing discover of stream formats, ALSA OXFW driver has memory
leak of allocated memory object at error path.

This commit releases the memory object at the error path.

Fixes: 6c29230e ('ALSA: oxfw: delayed registration of sound card')
Cc: <stable@vger.kernel.org> # v4.7+
Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent ce925f08
...@@ -208,6 +208,7 @@ static int detect_quirks(struct snd_oxfw *oxfw) ...@@ -208,6 +208,7 @@ static int detect_quirks(struct snd_oxfw *oxfw)
static void do_registration(struct work_struct *work) static void do_registration(struct work_struct *work)
{ {
struct snd_oxfw *oxfw = container_of(work, struct snd_oxfw, dwork.work); struct snd_oxfw *oxfw = container_of(work, struct snd_oxfw, dwork.work);
int i;
int err; int err;
if (oxfw->registered) if (oxfw->registered)
...@@ -270,6 +271,12 @@ static void do_registration(struct work_struct *work) ...@@ -270,6 +271,12 @@ static void do_registration(struct work_struct *work)
snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->rx_stream); snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->rx_stream);
if (oxfw->has_output) if (oxfw->has_output)
snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->tx_stream); snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->tx_stream);
for (i = 0; i < SND_OXFW_STREAM_FORMAT_ENTRIES; ++i) {
kfree(oxfw->tx_stream_formats[i]);
oxfw->tx_stream_formats[i] = NULL;
kfree(oxfw->rx_stream_formats[i]);
oxfw->rx_stream_formats[i] = NULL;
}
snd_card_free(oxfw->card); snd_card_free(oxfw->card);
kfree(oxfw->spec); kfree(oxfw->spec);
oxfw->spec = NULL; oxfw->spec = NULL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment