diff options
author | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-01-13 00:20:31 +0400 |
---|---|---|
committer | Mauro Carvalho Chehab <m.chehab@samsung.com> | 2014-01-14 20:35:55 +0400 |
commit | 0cd03a0cb20c75a70a154b946dcf4b3461ceff36 (patch) | |
tree | b12641850b95356ba427eeca663c7ab3e1960652 /drivers/media | |
parent | 229295f1d6713bc8c8ba900ba62bca03e34bba52 (diff) | |
download | linux-0cd03a0cb20c75a70a154b946dcf4b3461ceff36.tar.xz |
[media] em28xx-audio: simplify error handling
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>
Diffstat (limited to 'drivers/media')
-rw-r--r-- | drivers/media/usb/em28xx/em28xx-audio.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/media/usb/em28xx/em28xx-audio.c b/drivers/media/usb/em28xx/em28xx-audio.c index 47766b796acb..97d9105e6830 100644 --- a/drivers/media/usb/em28xx/em28xx-audio.c +++ b/drivers/media/usb/em28xx/em28xx-audio.c @@ -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) |