diff options
author | Markus Elfring | 2017-08-22 19:58:30 +0200 |
---|---|---|
committer | Takashi Iwai | 2017-08-22 20:06:10 +0200 |
commit | e17a85eccfa0b7d0089af218b0c468d4b8a3c3c2 (patch) | |
tree | 24582ae4bc8fd157948e388b5cb1fb28d3ec7afb /sound | |
parent | 62a939477173fabfe9f52114fab878a00b87f9a3 (diff) |
ALSA: cmipci: Use common error handling code in snd_cmipci_probe()
Add a jump target so that a bit of exception handling can be better reused
at the end of this function.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/cmipci.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/sound/pci/cmipci.c b/sound/pci/cmipci.c index a45245f16059..26a657870664 100644 --- a/sound/pci/cmipci.c +++ b/sound/pci/cmipci.c @@ -3295,20 +3295,23 @@ static int snd_cmipci_probe(struct pci_dev *pci, break; } - if ((err = snd_cmipci_create(card, pci, dev, &cm)) < 0) { - snd_card_free(card); - return err; - } + err = snd_cmipci_create(card, pci, dev, &cm); + if (err < 0) + goto free_card; + card->private_data = cm; - if ((err = snd_card_register(card)) < 0) { - snd_card_free(card); - return err; - } + err = snd_card_register(card); + if (err < 0) + goto free_card; + pci_set_drvdata(pci, card); dev++; return 0; +free_card: + snd_card_free(card); + return err; } static void snd_cmipci_remove(struct pci_dev *pci) |