Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -208,6 +208,7 @@ static int detect_quirks(struct snd_oxfw *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)
@@ -270,6 +271,12 @@ static void do_registration(struct work_struct *work)
	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;