summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorMarkus Elfring <elfring@users.sourceforge.net>2017-08-12 08:50:33 -0400
committerTakashi Iwai <tiwai@suse.de>2017-08-12 17:27:03 -0400
commitd72a8010ae60551ad14f1385e637be101cf741b5 (patch)
tree5f36a760bef62057afc7737aaf317e5183a44a58 /sound
parent1b2ff0c0c4803faa530cc1744cb0760f0703b416 (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.c27
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;
2530free_card:
2531 snd_card_free(card);
2532 return err;
2532} 2533}
2533 2534
2534static void snd_rme96_remove(struct pci_dev *pci) 2535static void snd_rme96_remove(struct pci_dev *pci)