From: Markus Elfring elfring@users.sourceforge.net Date: Sat, 18 Nov 2017 21:23:27 +0100
Add jump targets so that a bit of exception handling can be better reused at the end of these functions.
This issue was detected by using the Coccinelle software.
Signed-off-by: Markus Elfring elfring@users.sourceforge.net --- sound/pci/vx222/vx222.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-)
diff --git a/sound/pci/vx222/vx222.c b/sound/pci/vx222/vx222.c index 1f866a810a98..672b8f190777 100644 --- a/sound/pci/vx222/vx222.c +++ b/sound/pci/vx222/vx222.c @@ -163,10 +163,9 @@ static int snd_vx222_create(struct snd_card *card, struct pci_dev *pci, vx->pci = pci;
err = pci_request_regions(pci, CARD_NAME); - if (err < 0) { - snd_vx222_free(chip); - return err; - } + if (err < 0) + goto free_sound_chip; + for (i = 0; i < 2; i++) vx->port[i] = pci_resource_start(pci, i + 1);
@@ -174,19 +173,21 @@ static int snd_vx222_create(struct snd_card *card, struct pci_dev *pci, snd_vx_threaded_irq_handler, IRQF_SHARED, KBUILD_MODNAME, chip)) { dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq); - snd_vx222_free(chip); - return -EBUSY; + err = -EBUSY; + goto free_sound_chip; } chip->irq = pci->irq;
err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); - if (err < 0) { - snd_vx222_free(chip); - return err; - } + if (err < 0) + goto free_sound_chip;
*rchip = vx; return 0; + +free_sound_chip: + snd_vx222_free(chip); + return err; }
@@ -225,10 +226,9 @@ static int snd_vx222_probe(struct pci_dev *pci, }
err = snd_vx222_create(card, pci, hw, &vx); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + card->private_data = vx; vx->core.ibl.size = ibl[dev];
@@ -242,20 +242,20 @@ static int snd_vx222_probe(struct pci_dev *pci, #endif
err = snd_vx_setup_firmware(&vx->core); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card;
err = snd_card_register(card); - if (err < 0) { - snd_card_free(card); - return err; - } + 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_vx222_remove(struct pci_dev *pci)