diff options
author | Markus Elfring <elfring@users.sourceforge.net> | 2017-08-12 14:50:33 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2017-08-12 23:27:03 +0200 |
commit | d72a8010ae60551ad14f1385e637be101cf741b5 (patch) | |
tree | 5f36a760bef62057afc7737aaf317e5183a44a58 | |
parent | 1b2ff0c0c4803faa530cc1744cb0760f0703b416 (diff) |
ALSA: rme96: Use common error handling code in snd_rme96_probe()
Add a jump target so that a bit of exception handling can be better reused
at the end of this function.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r-- | sound/pci/rme96.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/sound/pci/rme96.c b/sound/pci/rme96.c index 82e8c78e48ca..0cdfd53b7796 100644 --- a/sound/pci/rme96.c +++ b/sound/pci/rme96.c @@ -2481,21 +2481,20 @@ snd_rme96_probe(struct pci_dev *pci, rme96 = card->private_data; rme96->card = card; rme96->pci = pci; - if ((err = snd_rme96_create(rme96)) < 0) { - snd_card_free(card); - return err; - } + err = snd_rme96_create(rme96); + if (err) + goto free_card; #ifdef CONFIG_PM_SLEEP rme96->playback_suspend_buffer = vmalloc(RME96_BUFFER_SIZE); if (!rme96->playback_suspend_buffer) { - snd_card_free(card); - return -ENOMEM; + err = -ENOMEM; + goto free_card; } rme96->capture_suspend_buffer = vmalloc(RME96_BUFFER_SIZE); if (!rme96->capture_suspend_buffer) { - snd_card_free(card); - return -ENOMEM; + err = -ENOMEM; + goto free_card; } #endif @@ -2521,14 +2520,16 @@ snd_rme96_probe(struct pci_dev *pci, } sprintf(card->longname, "%s at 0x%lx, irq %d", card->shortname, rme96->port, rme96->irq); - - if ((err = snd_card_register(card)) < 0) { - snd_card_free(card); - return err; - } + err = snd_card_register(card); + if (err) + goto free_card; + pci_set_drvdata(pci, card); dev++; return 0; +free_card: + snd_card_free(card); + return err; } static void snd_rme96_remove(struct pci_dev *pci) |