From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756626AbdKNUjX (ORCPT ); Tue, 14 Nov 2017 15:39:23 -0500 Received: from mout.web.de ([212.227.17.11]:51423 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751197AbdKNUjN (ORCPT ); Tue, 14 Nov 2017 15:39:13 -0500 Subject: [PATCH 3/3] ALSA: es1938: Use common error handling code in snd_es1938_create() From: SF Markus Elfring To: alsa-devel@alsa-project.org, Bhumika Goyal , Jaroslav Kysela , Takashi Iwai , Takashi Sakamoto Cc: LKML , kernel-janitors@vger.kernel.org References: Message-ID: <08c88cad-b4cf-948a-e990-390617503ffd@users.sourceforge.net> Date: Tue, 14 Nov 2017 21:38:28 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-GB Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K0:Z1bztQjVyqsAWhlAXn14klbSDA9Rb2D6FuBBGOnkNa9SdWiYPNS A4yklSqNvJmEVuindOd1OYkDKghllL5SGqeZNm9dIfDU6SFVNcftA78pR6W5rowCnOdS1kD 04OJ6Ih3VIdbMQ5ZROE4bT2J+4zDVrTaWXQyWLJUqUjC2YISWL1yRIVseDfoPTiJ6Ot22aq xGtXxcSOxS8hFZWcMov5g== X-UI-Out-Filterresults: notjunk:1;V01:K0:Ax5CWbUta18=:h9V04XN+dW8/W5QEVeSp3A yaDN4spXmF4oSMvLWz4Aezv734zdHATnlipzCRh8Mty5kqGA0nSw2bIJH0IENowIozvAIxHAy RrnV26tLImjLizr0F1AWisrsdEgjqXw9jshxFcL2ef2J8nP5JOm0q70Mcwc3LJRVzFBnoKs4W XiGOAXlkPMZn+w6Gv8Xv1cUdMIipOajii0WbjfI4o7g/QSKz/6QRg10DIo4j/tXEGRCJv2MnJ lPydCIQN1+Qu3J2OIPJUSwhHxYONndk7yXNffp4Wwp9bcmtxUCwqiYNTf1/vlxA6R8DKStN1c z1ouxtEvUtJjbIN+t7kdkgRcDgSrabllnPbmv28bbcgyMnwZpfIrd+NOVhkJclb5P6xqzRZK6 A5b0a1Xq623U7Ut6wdEXUw9aPNZILT7uYa8fbdphXrpqUgjTmy3UdaXodv2/bCPXdyiEmTCUB nI4a5i39SeDKe/eu2MzRP2LcvYVcwSzWOrPPV86n1NuduS4F+qhAmz4Z4/MvGNnGxf+8jeDFM d9kv3H+AEzWjGBRR3oDLmTKlp0VbXfaXEBbh+vuJkWO/pwOHgUC2MqpILiTxWzUDR14msYyvT yVfyW4wPQ6CrLAMhzowM3QATKn4yRovqTrAq/IECvddJLxzip1SRkr9ZQS0mmftqQK/I+rjZK BnObwU6t/s/WjtFFbJQxOpdo+Y4DZlDUkOJblmyQAMj460/z5l4Vh/+MwD0HLL/VhAMxZyU1A eXC94sGpwsgQCNb7sH3JzG/ARlPXUtT1PcDl2kLrz+6Nf4AZHkAeHZ2auph2jNYTylG3nVhex AoCxMSyXoiAjg8cFT1k+7kzk4fJHtYSxnqmEYGINv1K8yEk5pM= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Tue, 14 Nov 2017 21:25:55 +0100 Add jump targets so that a bit of exception handling can be better reused at the end of this function. Signed-off-by: Markus Elfring --- sound/pci/es1938.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/sound/pci/es1938.c b/sound/pci/es1938.c index b19e611345d1..2b4dd1297bbc 100644 --- a/sound/pci/es1938.c +++ b/sound/pci/es1938.c @@ -1606,14 +1606,14 @@ static int snd_es1938_create(struct snd_card *card, dma_set_coherent_mask(&pci->dev, DMA_BIT_MASK(24)) < 0) { dev_err(card->dev, "architecture does not support 24bit PCI busmaster 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; } spin_lock_init(&chip->reg_lock); spin_lock_init(&chip->mixer_lock); @@ -1623,8 +1623,7 @@ static int snd_es1938_create(struct snd_card *card, err = pci_request_regions(pci, "ESS Solo-1"); if (err < 0) { kfree(chip); - pci_disable_device(pci); - return err; + goto disable_device; } chip->io_port = pci_resource_start(pci, 0); chip->sb_port = pci_resource_start(pci, 1); @@ -1634,8 +1633,8 @@ static int snd_es1938_create(struct snd_card *card, if (request_irq(pci->irq, snd_es1938_interrupt, IRQF_SHARED, KBUILD_MODNAME, chip)) { dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq); - snd_es1938_free(chip); - return -EBUSY; + err = -EBUSY; + goto free_sound_chip; } chip->irq = pci->irq; dev_dbg(card->dev, @@ -1647,13 +1646,19 @@ static int snd_es1938_create(struct snd_card *card, snd_es1938_chip_init(chip); err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); - if (err < 0) { - snd_es1938_free(chip); - return err; - } + if (err < 0) + goto free_sound_chip; *rchip = chip; return 0; + +disable_device: + pci_disable_device(pci); + return err; + +free_sound_chip: + snd_es1938_free(chip); + return err; } /* -------------------------------------------------------------------- -- 2.15.0