From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751122AbdKLMEW (ORCPT ); Sun, 12 Nov 2017 07:04:22 -0500 Received: from mout.web.de ([212.227.15.3]:49597 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750847AbdKLMET (ORCPT ); Sun, 12 Nov 2017 07:04:19 -0500 To: alsa-devel@alsa-project.org, Bhumika Goyal , Jaroslav Kysela , Takashi Iwai Cc: LKML , kernel-janitors@vger.kernel.org From: SF Markus Elfring Subject: [PATCH] ALSA: als300: Use common error handling code in two functions Message-ID: <05cbc30d-ca3b-0c0c-ef7f-fc128bcc8753@users.sourceforge.net> Date: Sun, 12 Nov 2017 13:03:04 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:DeienFUB7sGGdRn0QmFVFDbe4on3+xiQs+jfggQn5s6dBWdKFAx kRAKsO64dH76F/Wq6uTVKL1qV+ao2Ud+6Yk/iHpA7QTekRZIL0Oa7JKwz6xNgeIcWwI8GqC ABNIMJSGBb/Q6lpV2priV2lxYRfqmPn98DLzMd0yTdO5J7VoPdKfkBNMu+xzD3Iqy5cNTuW hakXF7pteeuh9mniIX+EA== X-UI-Out-Filterresults: notjunk:1;V01:K0:1tRSs2yLU6o=:6r6PF2CWfmC0i9/A1/8JHd asulwHUQjNH6TnqwtMCmIuZ5vyeAnAqBX+uzwt39OUMpYx76ySbz3dKhGQmsBysyOhfnkHob+ 1Kip+UovOd31v4GpS47m71gKPLIUv/rS71vKRUk3bS9iFYVdDC8pHCvNwx6McyWv0AlxbRco3 9ZrTzhcWHMf8ETUQI+bLOFP/3jbe/BoPsWVx05+FpDLoEu43aU4u6clCaoGG+S5m9xeFcSnTL AsBg92THezl6haFl7RIB76KQR7r0KDRQWNWGNwZrCdYbUARtMFyrNp4HMMBr7VGlM1sC3pgWh G6wPwhT97N8jXeFfc6mRdeygRBOuwy1NzBnyvCmEmZCzYnLVfx2TGlgP54LMtcfbma+iGIU8o oCcZbxmhDpTRMhosLFIyRa2+hTXcwsdmlNfPsNF8kcXLmNjz6zLOlt7nFmRYuG6H1Pii34uLA crp7D6C2ucOE+Iu2acd5996cAkso/CIe070DCvvkxzTldEEG9gvSQzjHh7jl7rLkgDg3+LmI5 0ZwaDtrkKYhcO+4VyO11mI0nc3J27e2cNLVK8MMne8HGsqQolZgoWPsKzOodNDjfRG8jnhHvu Hd0Eq7uUatfE+5lzqeqg9uM8HLk5IxjnF3smXbR9wtTzCYyVikoBR0Ny+pwWZ2QNjqbSta2H7 Dddt+95e4sBTqrJA59sys5T5vSG7fLPPA090Wfuhu60uXCE0iBcGYvAO/8+F8GGchHq5RDABn 0tSB3EYXOmch7MKAmlPIQcuEUAoMbGAjFEgHZia9ROBfaTa1dXvCRnimPV3BJ1dlNSAKl0fkq COO8Ahh6XtOIacZuaHUNHLHEIn69IeFqeJGbwQAy3xCZtZYpX8= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Sun, 12 Nov 2017 12:52:50 +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. * The script "checkpatch.pl" pointed information out like the following. ERROR: do not use assignment in if condition Thus fix six affected source code places. Signed-off-by: Markus Elfring --- sound/pci/als300.c | 65 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/sound/pci/als300.c b/sound/pci/als300.c index eaa2d853d922..fd5ba75595cc 100644 --- a/sound/pci/als300.c +++ b/sound/pci/als300.c @@ -655,21 +655,22 @@ static int snd_als300_create(struct snd_card *card, }; *rchip = NULL; - if ((err = pci_enable_device(pci)) < 0) + err = pci_enable_device(pci); + if (err < 0) return err; if (dma_set_mask(&pci->dev, DMA_BIT_MASK(28)) < 0 || dma_set_coherent_mask(&pci->dev, DMA_BIT_MASK(28)) < 0) { dev_err(card->dev, "error setting 28bit DMA mask\n"); - pci_disable_device(pci); - return -ENXIO; + err = -ENXIO; + goto disable_device; } pci_set_master(pci); chip = kzalloc(sizeof(*chip), GFP_KERNEL); if (chip == NULL) { - pci_disable_device(pci); - return -ENOMEM; + err = -ENOMEM; + goto disable_device; } chip->card = card; @@ -678,10 +679,10 @@ static int snd_als300_create(struct snd_card *card, chip->chip_type = chip_type; spin_lock_init(&chip->reg_lock); - if ((err = pci_request_regions(pci, "ALS300")) < 0) { + err = pci_request_regions(pci, "ALS300"); + if (err < 0) { kfree(chip); - pci_disable_device(pci); - return err; + goto disable_device; } chip->port = pci_resource_start(pci, 0); @@ -693,8 +694,8 @@ static int snd_als300_create(struct snd_card *card, if (request_irq(pci->irq, irq_handler, IRQF_SHARED, KBUILD_MODNAME, chip)) { dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq); - snd_als300_free(chip); - return -EBUSY; + err = -EBUSY; + goto free_sound_chip; } chip->irq = pci->irq; @@ -704,24 +705,29 @@ static int snd_als300_create(struct snd_card *card, err = snd_als300_ac97(chip); if (err < 0) { dev_err(card->dev, "Could not create ac97\n"); - snd_als300_free(chip); - return err; + goto free_sound_chip; } - if ((err = snd_als300_new_pcm(chip)) < 0) { + err = snd_als300_new_pcm(chip); + if (err < 0) { dev_err(card->dev, "Could not create PCM\n"); - snd_als300_free(chip); - return err; + goto free_sound_chip; } - if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, - chip, &ops)) < 0) { - snd_als300_free(chip); - return err; - } + err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); + if (err < 0) + goto free_sound_chip; *rchip = chip; return 0; + +disable_device: + pci_disable_device(pci); + return err; + +free_sound_chip: + snd_als300_free(chip); + return err; } #ifdef CONFIG_PM_SLEEP @@ -776,11 +782,10 @@ static int snd_als300_probe(struct pci_dev *pci, return err; chip_type = pci_id->driver_data; + err = snd_als300_create(card, pci, chip_type, &chip); + if (err < 0) + goto free_card; - if ((err = snd_als300_create(card, pci, chip_type, &chip)) < 0) { - snd_card_free(card); - return err; - } card->private_data = chip; strcpy(card->driver, "ALS300"); @@ -794,13 +799,17 @@ static int snd_als300_probe(struct pci_dev *pci, sprintf(card->longname, "%s at 0x%lx irq %i", card->shortname, chip->port, chip->irq); - 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 struct pci_driver als300_driver = { -- 2.15.0