aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <m.chehab@samsung.com>2014-01-12 15:20:31 -0500
committerMauro Carvalho Chehab <m.chehab@samsung.com>2014-01-14 11:35:55 -0500
commit0cd03a0cb20c75a70a154b946dcf4b3461ceff36 (patch)
treeb12641850b95356ba427eeca663c7ab3e1960652
parent229295f1d6713bc8c8ba900ba62bca03e34bba52 (diff)
[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>
-rw-r--r--drivers/media/usb/em28xx/em28xx-audio.c27
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)
893 adev->udev = dev->udev; 893 adev->udev = dev->udev;
894 894
895 err = snd_pcm_new(card, "Em28xx Audio", 0, 0, 1, &pcm); 895 err = snd_pcm_new(card, "Em28xx Audio", 0, 0, 1, &pcm);
896 if (err < 0) { 896 if (err < 0)
897 snd_card_free(card); 897 goto card_free;
898 return err;
899 }
900 898
901 snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_em28xx_pcm_capture); 899 snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &snd_em28xx_pcm_capture);
902 pcm->info_flags = 0; 900 pcm->info_flags = 0;
@@ -927,20 +925,23 @@ static int em28xx_audio_init(struct em28xx *dev)
927 } 925 }
928 926
929 err = em28xx_audio_urb_init(dev); 927 err = em28xx_audio_urb_init(dev);
930 if (err) { 928 if (err)
931 snd_card_free(card); 929 goto card_free;
932 return -ENODEV;
933 }
934 930
935 err = snd_card_register(card); 931 err = snd_card_register(card);
936 if (err < 0) { 932 if (err < 0)
937 em28xx_audio_free_urb(dev); 933 goto urb_free;
938 snd_card_free(card);
939 return err;
940 }
941 934
942 em28xx_info("Audio extension successfully initialized\n"); 935 em28xx_info("Audio extension successfully initialized\n");
943 return 0; 936 return 0;
937
938urb_free:
939 em28xx_audio_free_urb(dev);
940
941card_free:
942 snd_card_free(card);
943
944 return err;
944} 945}
945 946
946static int em28xx_audio_fini(struct em28xx *dev) 947static int em28xx_audio_fini(struct em28xx *dev)