diff options
author | Markus Elfring <elfring@users.sourceforge.net> | 2017-08-12 08:50:33 -0400 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2017-08-12 17:27:03 -0400 |
commit | d72a8010ae60551ad14f1385e637be101cf741b5 (patch) | |
tree | 5f36a760bef62057afc7737aaf317e5183a44a58 /sound | |
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>
Diffstat (limited to 'sound')
-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, | |||
2481 | rme96 = card->private_data; | 2481 | rme96 = card->private_data; |
2482 | rme96->card = card; | 2482 | rme96->card = card; |
2483 | rme96->pci = pci; | 2483 | rme96->pci = pci; |
2484 | if ((err = snd_rme96_create(rme96)) < 0) { | 2484 | err = snd_rme96_create(rme96); |
2485 | snd_card_free(card); | 2485 | if (err) |
2486 | return err; | 2486 | goto free_card; |
2487 | } | ||
2488 | 2487 | ||
2489 | #ifdef CONFIG_PM_SLEEP | 2488 | #ifdef CONFIG_PM_SLEEP |
2490 | rme96->playback_suspend_buffer = vmalloc(RME96_BUFFER_SIZE); | 2489 | rme96->playback_suspend_buffer = vmalloc(RME96_BUFFER_SIZE); |
2491 | if (!rme96->playback_suspend_buffer) { | 2490 | if (!rme96->playback_suspend_buffer) { |
2492 | snd_card_free(card); | 2491 | err = -ENOMEM; |
2493 | return -ENOMEM; | 2492 | goto free_card; |
2494 | } | 2493 | } |
2495 | rme96->capture_suspend_buffer = vmalloc(RME96_BUFFER_SIZE); | 2494 | rme96->capture_suspend_buffer = vmalloc(RME96_BUFFER_SIZE); |
2496 | if (!rme96->capture_suspend_buffer) { | 2495 | if (!rme96->capture_suspend_buffer) { |
2497 | snd_card_free(card); | 2496 | err = -ENOMEM; |
2498 | return -ENOMEM; | 2497 | goto free_card; |
2499 | } | 2498 | } |
2500 | #endif | 2499 | #endif |
2501 | 2500 | ||
@@ -2521,14 +2520,16 @@ snd_rme96_probe(struct pci_dev *pci, | |||
2521 | } | 2520 | } |
2522 | sprintf(card->longname, "%s at 0x%lx, irq %d", card->shortname, | 2521 | sprintf(card->longname, "%s at 0x%lx, irq %d", card->shortname, |
2523 | rme96->port, rme96->irq); | 2522 | rme96->port, rme96->irq); |
2524 | 2523 | err = snd_card_register(card); | |
2525 | if ((err = snd_card_register(card)) < 0) { | 2524 | if (err) |
2526 | snd_card_free(card); | 2525 | goto free_card; |
2527 | return err; | 2526 | |
2528 | } | ||
2529 | pci_set_drvdata(pci, card); | 2527 | pci_set_drvdata(pci, card); |
2530 | dev++; | 2528 | dev++; |
2531 | return 0; | 2529 | return 0; |
2530 | free_card: | ||
2531 | snd_card_free(card); | ||
2532 | return err; | ||
2532 | } | 2533 | } |
2533 | 2534 | ||
2534 | static void snd_rme96_remove(struct pci_dev *pci) | 2535 | static void snd_rme96_remove(struct pci_dev *pci) |