V4L/DVB (9532): Properly handle error messages during alsa registering
Mauro Carvalho Chehab [Fri, 7 Nov 2008 17:24:18 +0000 (14:24 -0300)]
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

drivers/media/video/em28xx/em28xx-audio.c

index 7a8d49e..215ee78 100644 (file)
@@ -428,7 +428,7 @@ static int em28xx_audio_init(struct em28xx *dev)
 
        if (dev->has_audio_class) {
                /* This device does not support the extension (in this case
-                  the device is expecting the snd-usb-audio module */
+                  the device is expecting the snd-usb-audio module) */
                return 0;
        }
 
@@ -449,7 +449,12 @@ static int em28xx_audio_init(struct em28xx *dev)
        }
 
        spin_lock_init(&adev->slock);
-       ret = snd_pcm_new(card, "Em28xx Audio", 0, 0, 1, &pcm);
+       err = snd_pcm_new(card, "Em28xx Audio", 0, 0, 1, &pcm);
+       if (err < 0) {
+               snd_card_free(card);
+               return err;
+       }
+
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_em28xx_pcm_capture);
        pcm->info_flags = 0;
        pcm->private_data = dev;
@@ -461,7 +466,7 @@ static int em28xx_audio_init(struct em28xx *dev)
        err = snd_card_register(card);
        if (err < 0) {
                snd_card_free(card);
-               return -ENOMEM;
+               return err;
        }
        adev->sndcard = card;
        adev->udev = dev->udev;