From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756586AbdKNUiw (ORCPT ); Tue, 14 Nov 2017 15:38:52 -0500 Received: from mout.web.de ([212.227.17.11]:56385 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751197AbdKNUio (ORCPT ); Tue, 14 Nov 2017 15:38:44 -0500 Subject: [PATCH 2/3] ALSA: es1938: Use common error handling code in snd_es1938_probe() 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: Date: Tue, 14 Nov 2017 21:37:30 +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:ESzCe7oTJAKSIieDB+w7R5mEpeyD/4xhcH6M6KvuE5Ur1jhOVRT FUWCArG5MMSMODjoTACi7LM6xWq0JfMuRNrnwbgJAtoWqv5oI4nzQGNAwg2y6aJBemhrqZx spQ5KSDdGTJ8PwCDvBj1Nh9UfSBonzjKScD89IzXl7eVUHijE45jsK5L8GABZd6p3qVlvMI q5bc1EluudlF/mjYcBuXA== X-UI-Out-Filterresults: notjunk:1;V01:K0:yxW36PbBvwY=:/0TLs7OhzmXLG5m1Lckp8B AhWrIJ9aHvZTEeJiguhRr2G95y5HmsqPeoFuLztJI3SKC/7VX8rxUASd7t6IpfEr8MiwVtPIv wer2QBnFSwY0UA+mRPOnWATUfctMVxWpiKtp0enulaSWb5f5NBzRY27ey16N+cKTbNvUWhwQb VORXX32SdIurfHE6d6/o6f823sQyro24I6JrFWtYM3Hw/TVwTrJdR7yWNVM0t2Cjd1Ed2ixBt y6Y9rtg89wcz6kv96GqKZmpBQQ9sapt2K2D3BauqD1UhGf5WcTb9QEJ1rZPMhX34/fY5P6E4i U/jB5R2wLKSzjWWupJ6C1D8C9/Le4lspRrXHEspQ5qKUL+yjeHeCYKWL/7ETZiujKpS0ZGJ8O MHkptx1cjPsf+v2ElABjM9UHvi3QRSSINYSp0bYL3sTPCfc202dtBqgM5/DY2+rYP62MBrgAG kKoJvpNYmShNqrkPZtDqIx7ktolfPfofZ4PMFPp9cD/lnyB/R44xqzbBayBhiQbYgdqABo4zN zdZQKm0ok6or1wFMg5bi1dBRS3Z1Sp3Gnkt8Qzp2HuCVnX5tCiDqAqPXN4Zmuxt+VcfFARW79 XjF2ZtzwCE3Ph1+4VtgAbb1Isaunu9GWqjcr05gxkIimbqKrBqz2GAMT4GKr2e8j5jexBPJUM JYmmONCBf+fJePyfg00tLDGjHgEJI32GUT9nt4L5JmZIKt1e0tvQknqMOLCpooG44eevv2KCP uYvSj4TPAlPQgdC3xfALGf9TbNlz3w1QmdpE05h10OBbeApYycz5xx5pKffeNj7D6d90zD5pQ HIPWGjc8uu9oiPgHjAwll5nTMdHs6u9dHD/2Np8JUGJpBYp21o= 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:06:05 +0100 Add a jump target so that a bit of exception handling can be better reused at the end of this function. This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring --- sound/pci/es1938.c | 48 ++++++++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 26 deletions(-) diff --git a/sound/pci/es1938.c b/sound/pci/es1938.c index 83d652bdef51..b19e611345d1 100644 --- a/sound/pci/es1938.c +++ b/sound/pci/es1938.c @@ -1810,16 +1810,15 @@ static int snd_es1938_probe(struct pci_dev *pci, for (idx = 0; idx < 5; idx++) { if (pci_resource_start(pci, idx) == 0 || !(pci_resource_flags(pci, idx) & IORESOURCE_IO)) { - snd_card_free(card); - return -ENODEV; + err = -ENODEV; + goto free_card; } } err = snd_es1938_create(card, pci, &chip); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + card->private_data = chip; strcpy(card->driver, "ES1938"); @@ -1830,15 +1829,13 @@ static int snd_es1938_probe(struct pci_dev *pci, chip->irq); err = snd_es1938_new_pcm(chip, 0); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + err = snd_es1938_mixer(chip); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + if (snd_opl3_create(card, SLSB_REG(chip, FMLOWADDR), SLSB_REG(chip, FMHIGHADDR), @@ -1847,15 +1844,12 @@ static int snd_es1938_probe(struct pci_dev *pci, SLSB_REG(chip, FMLOWADDR)); } else { err = snd_opl3_timer_new(opl3, 0, 1); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + err = snd_opl3_hwdep_new(opl3, 0, 1, NULL); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; } if (snd_mpu401_uart_new(card, 0, MPU401_HW_MPU401, chip->mpu_port, @@ -1871,14 +1865,16 @@ static int snd_es1938_probe(struct pci_dev *pci, snd_es1938_create_gameport(chip); 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_es1938_remove(struct pci_dev *pci) -- 2.15.0