| From 1064bc685d359f549f91c2d5f111965a9284f328 Mon Sep 17 00:00:00 2001 |
| From: Takashi Sakamoto <o-takashi@sakamocchi.jp> |
| Date: Mon, 17 Sep 2018 17:26:20 +0900 |
| Subject: ALSA: oxfw: fix memory leak of discovered stream formats at error path |
| |
| From: Takashi Sakamoto <o-takashi@sakamocchi.jp> |
| |
| commit 1064bc685d359f549f91c2d5f111965a9284f328 upstream. |
| |
| 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: 6c29230e2a5f ('ALSA: oxfw: delayed registration of sound card') |
| Cc: <stable@vger.kernel.org> # v4.7+ |
| Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| sound/firewire/oxfw/oxfw.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| --- a/sound/firewire/oxfw/oxfw.c |
| +++ b/sound/firewire/oxfw/oxfw.c |
| @@ -213,6 +213,7 @@ static int detect_quirks(struct snd_oxfw |
| static void do_registration(struct work_struct *work) |
| { |
| struct snd_oxfw *oxfw = container_of(work, struct snd_oxfw, dwork.work); |
| + int i; |
| int err; |
| |
| if (oxfw->registered) |
| @@ -275,6 +276,12 @@ error: |
| snd_oxfw_stream_destroy_simplex(oxfw, &oxfw->rx_stream); |
| if (oxfw->has_output) |
| 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); |
| kfree(oxfw->spec); |
| oxfw->spec = NULL; |