[media] em28xx-audio: simplify error handling
authorMauro Carvalho Chehab <m.chehab@samsung.com>
Sun, 12 Jan 2014 20:20:31 +0000 (17:20 -0300)
committerMauro Carvalho Chehab <m.chehab@samsung.com>
Tue, 14 Jan 2014 16:35:55 +0000 (14:35 -0200)
Cleanup the error handling code at em28xx-audio init.

Reviewed-by: Frank Schäfer <fschaefer.oss@googlemail.com>
Tested-by: Antti Palosaari <crope@iki.fi>
Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
drivers/media/usb/em28xx/em28xx-audio.c

index 47766b796acb069d2d5fb51c2ce46b621710c57e..97d9105e68303852bd1323a9c2ad24ee9e1b6b59 100644 (file)
@@ -893,10 +893,8 @@ static int em28xx_audio_init(struct em28xx *dev)
        adev->udev = dev->udev;
 
        err = snd_pcm_new(card, "Em28xx Audio", 0, 0, 1, &pcm);
-       if (err < 0) {
-               snd_card_free(card);
-               return err;
-       }
+       if (err < 0)
+               goto card_free;
 
        snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_em28xx_pcm_capture);
        pcm->info_flags = 0;
@@ -927,20 +925,23 @@ static int em28xx_audio_init(struct em28xx *dev)
        }
 
        err = em28xx_audio_urb_init(dev);
-       if (err) {
-               snd_card_free(card);
-               return -ENODEV;
-       }
+       if (err)
+               goto card_free;
 
        err = snd_card_register(card);
-       if (err < 0) {
-               em28xx_audio_free_urb(dev);
-               snd_card_free(card);
-               return err;
-       }
+       if (err < 0)
+               goto urb_free;
 
        em28xx_info("Audio extension successfully initialized\n");
        return 0;
+
+urb_free:
+       em28xx_audio_free_urb(dev);
+
+card_free:
+       snd_card_free(card);
+
+       return err;
 }
 
 static int em28xx_audio_fini(struct em28xx *dev)