From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752224AbdKMI6P (ORCPT ); Mon, 13 Nov 2017 03:58:15 -0500 Received: from mout.web.de ([212.227.17.12]:52722 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751562AbdKMI6N (ORCPT ); Mon, 13 Nov 2017 03:58:13 -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: aw2: Use common error handling code in three functions Message-ID: Date: Mon, 13 Nov 2017 09:56:51 +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:ZwVuHRwoFRpV1t6aeV8fxrpa1IdM7VKDOx8qEGYhbL7lL0b3K9z dTQQaVCfB4SGaarhpOXskBx2JMOMjFy/SLlkxj0ZxBhUOLoFjODZ714fqe8PAIRfyPIqxjw NhgkhoSEx36KsYOweRXXYYoRv3GT9xhrdmeOyLDt16JyxfW4fuln2uEcjfTNA1DlN5ceOnK q5FKyex8nHD3sANmqeeIw== X-UI-Out-Filterresults: notjunk:1;V01:K0:e3bTai+cq7E=:+4yRwkU8W72zrYAHrmQC1V SQwo6DqoSESq0ESwa6gcXQqQfA+AAQqatvVZu7Cgy7Yq80DnIJJSvTWwZaGbd1SNQsCP6KmXQ VB1Ko35cMa3+FLyOhVOagE5ZuVPAiWIsrbOP4QcRtIroHt+RQAiQzO4IOJ5L7pAMz02M5YQqV ER+D1yE5iNTbU5Bgg1fZ+iEwqN0kZSpE7PAFkqX74gi+3PSPzsDMfQe0MuMSaha2Jg3Wl7E3m V6/oxheQdoNySC1/f4YEZBf13HlYvp6m0C4yUEX66xQD9aMqrYWSksL/xvzu59WYmpsiXxY2D G+GhoX6frezubhShNb4XSYYHSORlhYhAEwicrqmolZFGCkqIAgLjX4bAxxOdj+njJnZWeQvJQ qK4SNg05S9FSrLs3MZQweWdqyGtsYkpxJ/UuY/SI3FZ5aICvdw0GUF7NXWaRJUy4Geici/+Wf YIewVKHX4n2PpZRS3rizCRgS3PWTBs4hVffg2gU+7aT2pKHLyMjtBemY86yT9LMzVt9EJebQg zuJQt089mLwZH2ifQG0Mnq3cobVJFp2ltvBfozun12RDzWeYBJRx1p/nYP7eg1dyAas1DyzZM oWVtcL2iigRqGyNE9CjebmR6JIFP9dFB7qeiaiO1Q3fG7ty/+e/znjVYftTdPEQG/0Aa9twL9 B5MOK8TIk4g18ULzJZ4YeLBxn24XafJa0W0syDk1EPb8CRUc8Bf6BbFpCQqEV0Da2iqKAqa5R sHC7JhjDzrVKjFNC1mhmAH+PetZVYqb5R3G0BpAzdA0vHz+DSMe9N8aMhup+Vdb3yWXCjaLye AWys8VXI3syeVEyBV3UlRZd8r6OCFED8T09+4n938jlhKje+rk= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Mon, 13 Nov 2017 09:49:15 +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 --- sound/pci/aw2/aw2-alsa.c | 85 +++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 45 deletions(-) diff --git a/sound/pci/aw2/aw2-alsa.c b/sound/pci/aw2/aw2-alsa.c index 9a49e4243a9c..25710043c79d 100644 --- a/sound/pci/aw2/aw2-alsa.c +++ b/sound/pci/aw2/aw2-alsa.c @@ -261,13 +261,13 @@ static int snd_aw2_create(struct snd_card *card, if ((dma_set_mask(&pci->dev, DMA_BIT_MASK(32)) < 0) || (dma_set_coherent_mask(&pci->dev, DMA_BIT_MASK(32)) < 0)) { dev_err(card->dev, "Impossible to set 32bit mask DMA\n"); - pci_disable_device(pci); - return -ENXIO; + err = -ENXIO; + goto disable_device; } chip = kzalloc(sizeof(*chip), GFP_KERNEL); if (chip == NULL) { - pci_disable_device(pci); - return -ENOMEM; + err = -ENOMEM; + goto disable_device; } /* initialize the stuff */ @@ -277,11 +277,9 @@ static int snd_aw2_create(struct snd_card *card, /* (1) PCI resource allocation */ err = pci_request_regions(pci, "Audiowerk2"); - if (err < 0) { - pci_disable_device(pci); - kfree(chip); - return err; - } + if (err < 0) + goto free_data; + chip->iobase_phys = pci_resource_start(pci, 0); chip->iobase_virt = ioremap_nocache(chip->iobase_phys, @@ -289,10 +287,8 @@ static int snd_aw2_create(struct snd_card *card, if (chip->iobase_virt == NULL) { dev_err(card->dev, "unable to remap memory region"); - pci_release_regions(pci); - pci_disable_device(pci); - kfree(chip); - return -ENOMEM; + err = -ENOMEM; + goto release_regions; } /* (2) initialization of the chip hardware */ @@ -301,23 +297,15 @@ static int snd_aw2_create(struct snd_card *card, if (request_irq(pci->irq, snd_aw2_saa7146_interrupt, IRQF_SHARED, KBUILD_MODNAME, chip)) { dev_err(card->dev, "Cannot grab irq %d\n", pci->irq); - - iounmap(chip->iobase_virt); - pci_release_regions(chip->pci); - pci_disable_device(chip->pci); - kfree(chip); - return -EBUSY; + err = -EBUSY; + goto unmap_io; } chip->irq = pci->irq; err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); if (err < 0) { free_irq(chip->irq, (void *)chip); - iounmap(chip->iobase_virt); - pci_release_regions(chip->pci); - pci_disable_device(chip->pci); - kfree(chip); - return err; + goto unmap_io; } *rchip = chip; @@ -325,6 +313,16 @@ static int snd_aw2_create(struct snd_card *card, dev_info(card->dev, "Audiowerk 2 sound card (saa7146 chipset) detected and managed\n"); return 0; + +unmap_io: + iounmap(chip->iobase_virt); +release_regions: + pci_release_regions(pci); +free_data: + kfree(chip); +disable_device: + pci_disable_device(pci); + return err; } /* constructor */ @@ -352,10 +350,8 @@ static int snd_aw2_probe(struct pci_dev *pci, /* (3) Create main component */ err = snd_aw2_create(card, pci, &chip); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; /* initialize mutex */ mutex_init(&chip->mtx); @@ -373,16 +369,18 @@ static int snd_aw2_probe(struct pci_dev *pci, /* (6) Register card instance */ err = snd_card_register(card); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; /* (7) Set PCI driver data */ pci_set_drvdata(pci, card); dev++; return 0; + +free_card: + snd_card_free(card); + return err; } /* destructor */ @@ -599,10 +597,8 @@ static int snd_aw2_new_pcm(struct aw2 *chip) err = snd_pcm_new(chip->card, "Audiowerk2 analog playback", 0, 1, 0, &pcm_playback_ana); - if (err < 0) { - dev_err(chip->card->dev, "snd_pcm_new error (0x%X)\n", err); - return err; - } + if (err < 0) + goto report_failure; /* Creation ok */ pcm_device = &chip->device_playback[NUM_STREAM_PLAYBACK_ANA]; @@ -636,11 +632,9 @@ static int snd_aw2_new_pcm(struct aw2 *chip) err = snd_pcm_new(chip->card, "Audiowerk2 digital playback", 1, 1, 0, &pcm_playback_num); + if (err < 0) + goto report_failure; - if (err < 0) { - dev_err(chip->card->dev, "snd_pcm_new error (0x%X)\n", err); - return err; - } /* Creation ok */ pcm_device = &chip->device_playback[NUM_STREAM_PLAYBACK_DIG]; @@ -673,11 +667,8 @@ static int snd_aw2_new_pcm(struct aw2 *chip) err = snd_pcm_new(chip->card, "Audiowerk2 capture", 2, 0, 1, &pcm_capture); - - if (err < 0) { - dev_err(chip->card->dev, "snd_pcm_new error (0x%X)\n", err); - return err; - } + if (err < 0) + goto report_failure; /* Creation ok */ pcm_device = &chip->device_capture[NUM_STREAM_CAPTURE_ANA]; @@ -718,6 +709,10 @@ static int snd_aw2_new_pcm(struct aw2 *chip) } return 0; + +report_failure: + dev_err(chip->card->dev, "snd_pcm_new error (0x%X)\n", err); + return err; } static int snd_aw2_control_switch_capture_info(struct snd_kcontrol *kcontrol, -- 2.15.0