From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1763188AbdKRUlo (ORCPT ); Sat, 18 Nov 2017 15:41:44 -0500 Received: from mout.web.de ([212.227.17.11]:57946 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1760932AbdKRUlh (ORCPT ); Sat, 18 Nov 2017 15:41:37 -0500 Subject: [PATCH 2/2] ALSA: vx222: Use common error handling code in two functions From: SF Markus Elfring To: alsa-devel@alsa-project.org, Bhumika Goyal , Jaroslav Kysela , Takashi Iwai Cc: LKML , kernel-janitors@vger.kernel.org References: Message-ID: <7d7de279-baaa-d41c-d5d3-af8eb3fc5948@users.sourceforge.net> Date: Sat, 18 Nov 2017 21:40:55 +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:u+X/52c2aTYMgiuQ4cvVdDuBFBskjJFWyYQeTrtQ+nk0+lyAS51 BIHFy8x0PXHQKwOykXuQOcjXyrt4+Rt979UTTwki2/ajAYnWLwVmBvbMaK8D7QhSAPy9Axz GlpJ+gK3Kz7c9miFl9igh5DRikB6lCrCetrLF29deEDvoSyeLIl4jb4MvpG9kfQc8H7COqg 92UQmAEdyYyEPPPOVOHqQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:9HL7upXvLhI=:++w2KoXUh/XbC7qT6zTDhW +YZwl5tQgZLjsmdPfcO6WS+rgXMjKeqITNSYSCADXfkkyCnpb/H7qxPYxhkinbwshYy1heByo Xpvt4OhMEoXZPzJjGy4tXr0/BkYPr6P2In0YZRyhWLgHlyCpOhDzP1iWfU9e6zoq8Sctsd7u5 sX+kmi90npuj+1IDtxadTwvzGfHrXzNmifNOcs5k8iXezI51z0pWJO+gxUmaRZzYcvf5rKi1e 2mhTE6zNR27hSBwXjEA+26iXjB/mj66HI/JzRUpz14t/zwreo2Jxmf5ZuBmegAMJfh5TccMzG pWaJb/BGwHGeUDe+Phgm6r3ha1tQq2BMWQ/zVBt2VYbRdDj1250I0TGdBNl2u3SdxoGOB/Ytm Y2oz1ZTe4eHNzJeN1BS5LLvy4S0cgFesbkOMoPm1RT/xwR8HclgVPDTei2C1Ybw+tGsE+MpOe IsnXC2uQO1vOKzT0HA/VO5UZNz+UnT2t0IDVxlvCJ3duC8CLXRrQvBKw2K2ubBstRvgJcGEgX DSZJDBn5JW09HrbDGBzNlbq2FULoQ4q9eDqcQwodQI67WOU9DrPpHfrC72ZSC2MyI1Q3469VK 5Ai2uuIhUCiY9w8IgFcFrl9rMECf3cUKmZJGe/EXoK+YnZJEUBzmH41w7wYpHhsyU3GpvOm3d ilYeMOp6fnUav3BD2c02Zt5FPNTqREGW7Uxpa4Ili3yFfe+49psGaQtQRvMEs7nrH54puvY8p xM9MURWUsyo8SHCF1jy4pfe2sY3LFJKU5qTwXzvr0cQKsuVMnt8JE5gWaTbPxMrIN74ZQAZIC S4puXlbuxIxNO/dxu8NYUzLYY8p820t4HEvdtrw2BPctUvLueo= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Markus Elfring Date: Sat, 18 Nov 2017 21:23:27 +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/vx222/vx222.c | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/sound/pci/vx222/vx222.c b/sound/pci/vx222/vx222.c index 1f866a810a98..672b8f190777 100644 --- a/sound/pci/vx222/vx222.c +++ b/sound/pci/vx222/vx222.c @@ -163,10 +163,9 @@ static int snd_vx222_create(struct snd_card *card, struct pci_dev *pci, vx->pci = pci; err = pci_request_regions(pci, CARD_NAME); - if (err < 0) { - snd_vx222_free(chip); - return err; - } + if (err < 0) + goto free_sound_chip; + for (i = 0; i < 2; i++) vx->port[i] = pci_resource_start(pci, i + 1); @@ -174,19 +173,21 @@ static int snd_vx222_create(struct snd_card *card, struct pci_dev *pci, snd_vx_threaded_irq_handler, IRQF_SHARED, KBUILD_MODNAME, chip)) { dev_err(card->dev, "unable to grab IRQ %d\n", pci->irq); - snd_vx222_free(chip); - return -EBUSY; + err = -EBUSY; + goto free_sound_chip; } chip->irq = pci->irq; err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); - if (err < 0) { - snd_vx222_free(chip); - return err; - } + if (err < 0) + goto free_sound_chip; *rchip = vx; return 0; + +free_sound_chip: + snd_vx222_free(chip); + return err; } @@ -225,10 +226,9 @@ static int snd_vx222_probe(struct pci_dev *pci, } err = snd_vx222_create(card, pci, hw, &vx); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + card->private_data = vx; vx->core.ibl.size = ibl[dev]; @@ -242,20 +242,20 @@ static int snd_vx222_probe(struct pci_dev *pci, #endif err = snd_vx_setup_firmware(&vx->core); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; 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_vx222_remove(struct pci_dev *pci) -- 2.15.0