Commit 27043642 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela

[ALSA] ali5451 - Fix possible NULL dereference

Reported by Eric Sesterhenn.
Fix the wrong checks of extra voice pointer, which may cause NULL
dereferences.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent 3b542985
...@@ -1250,7 +1250,7 @@ static int snd_ali_playback_hw_params(struct snd_pcm_substream *substream, ...@@ -1250,7 +1250,7 @@ static int snd_ali_playback_hw_params(struct snd_pcm_substream *substream,
evoice->substream = substream; evoice->substream = substream;
} }
} else { } else {
if (!evoice) { if (evoice) {
snd_ali_free_voice(codec, evoice); snd_ali_free_voice(codec, evoice);
pvoice->extra = evoice = NULL; pvoice->extra = evoice = NULL;
} }
...@@ -1267,7 +1267,7 @@ static int snd_ali_playback_hw_free(struct snd_pcm_substream *substream) ...@@ -1267,7 +1267,7 @@ static int snd_ali_playback_hw_free(struct snd_pcm_substream *substream)
struct snd_ali_voice *evoice = pvoice ? pvoice->extra : NULL; struct snd_ali_voice *evoice = pvoice ? pvoice->extra : NULL;
snd_pcm_lib_free_pages(substream); snd_pcm_lib_free_pages(substream);
if (!evoice) { if (evoice) {
snd_ali_free_voice(codec, evoice); snd_ali_free_voice(codec, evoice);
pvoice->extra = NULL; pvoice->extra = NULL;
} }
...@@ -1356,7 +1356,7 @@ static int snd_ali_playback_prepare(struct snd_pcm_substream *substream) ...@@ -1356,7 +1356,7 @@ static int snd_ali_playback_prepare(struct snd_pcm_substream *substream)
VOL, VOL,
CTRL, CTRL,
EC); EC);
if (!evoice) { if (evoice) {
evoice->count = pvoice->count; evoice->count = pvoice->count;
evoice->eso = pvoice->count << 1; evoice->eso = pvoice->count << 1;
ESO = evoice->eso - 1; ESO = evoice->eso - 1;
......
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