ALSA: sb: fix a missing check of snd_ctl_add
authorAditya Pakki <pakki001@umn.edu>
Sun, 6 Jan 2019 17:16:00 +0000 (11:16 -0600)
committerTakashi Iwai <tiwai@suse.de>
Mon, 7 Jan 2019 10:59:23 +0000 (11:59 +0100)
snd_ctl_add() could fail, so let's check its return value and return its
error code upstream upon failure.

Signed-off-by: Aditya Pakki <pakki001@umn.edu>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/isa/sb/sb16_main.c

index 37e6ce7..981d65d 100644 (file)
@@ -879,10 +879,14 @@ int snd_sb16dsp_pcm(struct snd_sb *chip, int device)
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &snd_sb16_playback_ops);
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_sb16_capture_ops);
 
-       if (chip->dma16 >= 0 && chip->dma8 != chip->dma16)
-               snd_ctl_add(card, snd_ctl_new1(&snd_sb16_dma_control, chip));
-       else
+       if (chip->dma16 >= 0 && chip->dma8 != chip->dma16) {
+               err = snd_ctl_add(card, snd_ctl_new1(
+                                       &snd_sb16_dma_control, chip));
+               if (err)
+                       return err;
+       } else {
                pcm->info_flags = SNDRV_PCM_INFO_HALF_DUPLEX;
+       }
 
        snd_pcm_lib_preallocate_pages_for_all(pcm, SNDRV_DMA_TYPE_DEV,
                                              snd_dma_isa_data(),