From patchwork Wed Nov 15 12:47:45 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: SF Markus Elfring X-Patchwork-Id: 10059331 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id B2E716019D for ; Wed, 15 Nov 2017 12:48:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A3D66204BD for ; Wed, 15 Nov 2017 12:48:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9848329F72; Wed, 15 Nov 2017 12:48:12 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from alsa0.perex.cz (alsa0.perex.cz [77.48.224.243]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CAD5129C6E for ; Wed, 15 Nov 2017 12:48:11 +0000 (UTC) Received: from alsa0.perex.cz (localhost [127.0.0.1]) by alsa0.perex.cz (Postfix) with ESMTP id 7C1AC267024; Wed, 15 Nov 2017 13:48:08 +0100 (CET) X-Original-To: alsa-devel@alsa-project.org Delivered-To: alsa-devel@alsa-project.org Received: by alsa0.perex.cz (Postfix, from userid 1000) id 8FDF6267025; Wed, 15 Nov 2017 13:48:07 +0100 (CET) Received: from mout.web.de (mout.web.de [212.227.17.11]) by alsa0.perex.cz (Postfix) with ESMTP id F03FB266D11 for ; Wed, 15 Nov 2017 13:48:05 +0100 (CET) Received: from [192.168.1.3] ([77.182.217.107]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MDgDS-1ePLtC0gAg-00H6cK; Wed, 15 Nov 2017 13:47:48 +0100 From: SF Markus Elfring To: alsa-devel@alsa-project.org, Andy Shevchenko , Bhumika Goyal , Jaroslav Kysela , Takashi Iwai References: <86b94d9c-77fb-fed5-b55c-a0565f619dc7@users.sourceforge.net> Message-ID: <8dd7d1f7-4174-3fe3-2a76-6c84fb1de375@users.sourceforge.net> Date: Wed, 15 Nov 2017 13:47:45 +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: <86b94d9c-77fb-fed5-b55c-a0565f619dc7@users.sourceforge.net> Content-Language: en-GB X-Provags-ID: V03:K0:7QGN7P+ppimG4yCIKFSNzuyiE0Q4AOVi/dU7aoEr83VhGOe3S9m o3wKkzbMd8ri6jpT7mjElq9LvHY4imero+ucWJ763wYxPLL8DPdRXJk4dsy7Hbra3ogr42Z LXjKnGTOLBknpVK3XHWYB2TRsH4VqcScQbY+XbGLzNOCLFTiwdB4hO1+vVUqStr3fHDKaC0 UJjnwy7dEJAI80U4Yo/KA== X-UI-Out-Filterresults: notjunk:1; V01:K0:aDt6XKRnTHY=:jjHDEIIfyhtaE7kDEPOz7F kUF4mkiQU6mRC48oFw/SjcdXIc8noJurjOWHytVwr4NNZ1NIOKECB0eVQAvQvtaiGA3JgB9MB qw5Eh0+lgrkzvly4unoNvHT19ETqqvQ5gIqHHPKO3io7JtUEssXdIj/8t/1Fov0214ySiM54X +cUQBPlLaN//62nem93vMuP79f4v28GfzSR6dImYL+tyO9YAJQ3ctfG88QTrygQiym0SOcxc2 Bc8eNUvFvnVOeDFLJiVYiB5Uuqu0M71BZ6FhsVxfKTUlwa2HwXIX93t9sj/9nUJzbC5Tt1lNE jneHEZsL7cP99kjZaBVv5ZrXGzu20a5isanPsIRI+U0GxB58TiLDEt9GDFaDdu6t1Rx6TPmh5 Th/MD1qL8ps6YqTPT5odMTlsHIbncHo7Y6R6UA0YMg6vQe2L+8S8X00J7d2ElX4uRNTku0eur ZnfhdYig0sivhvi955ko4CMW6MxVp0+0DXJeB5AP9FpCjJrX0fdrx4eGqf76wdmet02AGaU4q PInXmpYs2ZVigFmY0bSGDPOL/RLCVPtA9TEgzw3+t20daTLfQ4dlhZr+vzz0Ia3Fn04W23kTS 223dCIuTP842y20jRTV6QRD7h3bN4MGY3hfOzjLBwO5phMV+dxdSdj21tRyhNPgjKvYmB21II BN2SDBn+iyUtGzAOvv1rw87YQdELRAjrGjgU0uBtrwYruX4VWi2GGIrkJWx7Ln+ybQduZYzvM qDikoB82QhKznK08K+IebL3KNCoFmu4tBaYQgHkPrthXD2OVHZ+BSu6Tu9PESaET2C814VsWA IdO32RitIh5hLVOut3p3jd58e67uHqI+a2Ix6miFTIjdLfNDns= Cc: kernel-janitors@vger.kernel.org, LKML Subject: [alsa-devel] [PATCH 2/3] ALSA: fm801: Use common error handling code in two functions X-BeenThere: alsa-devel@alsa-project.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Alsa-devel mailing list for ALSA developers - http://www.alsa-project.org" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org X-Virus-Scanned: ClamAV using ClamSMTP From: Markus Elfring Date: Wed, 15 Nov 2017 13:27:57 +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/fm801.c | 77 ++++++++++++++++++++++++++----------------------------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/sound/pci/fm801.c b/sound/pci/fm801.c index 3648af4581a0..e4c0fa8db5f6 100644 --- a/sound/pci/fm801.c +++ b/sound/pci/fm801.c @@ -1245,8 +1245,8 @@ static int snd_fm801_create(struct snd_card *card, if (devm_request_irq(&pci->dev, pci->irq, snd_fm801_interrupt, IRQF_SHARED, KBUILD_MODNAME, chip)) { dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq); - snd_fm801_free(chip); - return -EBUSY; + err = -EBUSY; + goto free_sound_chip; } chip->irq = pci->irq; pci_set_master(pci); @@ -1255,17 +1255,14 @@ static int snd_fm801_create(struct snd_card *card, snd_fm801_chip_init(chip); err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); - if (err < 0) { - snd_fm801_free(chip); - return err; - } + if (err < 0) + goto free_sound_chip; #ifdef CONFIG_SND_FM801_TEA575X_BOOL err = v4l2_device_register(&pci->dev, &chip->v4l2_dev); - if (err < 0) { - snd_fm801_free(chip); - return err; - } + if (err < 0) + goto free_sound_chip; + chip->tea.v4l2_dev = &chip->v4l2_dev; chip->tea.radio_nr = radio_nr; chip->tea.private_data = chip; @@ -1275,8 +1272,8 @@ static int snd_fm801_create(struct snd_card *card, (chip->tea575x_tuner & TUNER_TYPE_MASK) < 4) { if (snd_tea575x_init(&chip->tea, THIS_MODULE)) { dev_err(card->dev, "TEA575x radio not found\n"); - snd_fm801_free(chip); - return -ENODEV; + err = -ENODEV; + goto free_sound_chip; } } else if ((chip->tea575x_tuner & TUNER_TYPE_MASK) == 0) { unsigned int tuner_only = chip->tea575x_tuner & TUNER_ONLY; @@ -1306,6 +1303,10 @@ static int snd_fm801_create(struct snd_card *card, *rchip = chip; return 0; + +free_sound_chip: + snd_fm801_free(chip); + return err; } static int snd_card_fm801_probe(struct pci_dev *pci, @@ -1331,10 +1332,9 @@ static int snd_card_fm801_probe(struct pci_dev *pci, err = snd_fm801_create(card, pci, tea575x_tuner[dev], radio_nr[dev], &chip); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + card->private_data = chip; strcpy(card->driver, "FM801"); @@ -1347,45 +1347,42 @@ static int snd_card_fm801_probe(struct pci_dev *pci, goto __fm801_tuner_only; err = snd_fm801_pcm(chip, 0); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + err = snd_fm801_mixer(chip); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + err = snd_mpu401_uart_new(card, 0, MPU401_HW_FM801, chip->port + FM801_MPU401_DATA, MPU401_INFO_INTEGRATED | MPU401_INFO_IRQ_HOOK, -1, &chip->rmidi); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + err = snd_opl3_create(card, chip->port + FM801_OPL3_BANK0, chip->port + FM801_OPL3_BANK1, OPL3_HW_OPL3_FM801, 1, &opl3); - 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; __fm801_tuner_only: 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_card_fm801_remove(struct pci_dev *pci)