[ALSA] ali5451 - Fix possible NULL dereference
authorTakashi Iwai <tiwai@suse.de>
Sat, 19 May 2007 14:30:35 +0000 (16:30 +0200)
committerJaroslav Kysela <perex@suse.cz>
Thu, 31 May 2007 07:06:02 +0000 (09:06 +0200)
Reported by Eric Sesterhenn.
Fix the wrong checks of extra voice pointer, which may cause NULL
dereferences.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Jaroslav Kysela <perex@suse.cz>
sound/pci/ali5451/ali5451.c

index e1ed59549c5063a76ba0eb200f966ebaa0c268c8..cb59f994c68f2a4bdfd2c9c1925d5b8cb2dd507d 100644 (file)
@@ -1250,7 +1250,7 @@ static int snd_ali_playback_hw_params(struct snd_pcm_substream *substream,
                        evoice->substream = substream;
                }
        } else {
-               if (!evoice) {
+               if (evoice) {
                        snd_ali_free_voice(codec, evoice);
                        pvoice->extra = evoice = NULL;
                }
@@ -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;
 
        snd_pcm_lib_free_pages(substream);
-       if (!evoice) {
+       if (evoice) {
                snd_ali_free_voice(codec, evoice);
                pvoice->extra = NULL;
        }
@@ -1356,7 +1356,7 @@ static int snd_ali_playback_prepare(struct snd_pcm_substream *substream)
                                 VOL,
                                 CTRL,
                                 EC);
-       if (!evoice) {
+       if (evoice) {
                evoice->count = pvoice->count;
                evoice->eso = pvoice->count << 1;
                ESO = evoice->eso - 1;