From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755046AbdKMTlJ (ORCPT ); Mon, 13 Nov 2017 14:41:09 -0500 Received: from mout.web.de ([217.72.192.78]:50976 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751415AbdKMTlH (ORCPT ); Mon, 13 Nov 2017 14:41:07 -0500 To: alsa-devel@alsa-project.org, Jaroslav Kysela , Takashi Iwai Cc: LKML , kernel-janitors@vger.kernel.org From: SF Markus Elfring Subject: [PATCH] ALSA: cs5530: Use common error handling code in snd_cs5530_create() Message-ID: <6acf9697-a5df-0cd4-6cac-1198980c943b@users.sourceforge.net> Date: Mon, 13 Nov 2017 20:40:20 +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:Rb3uLmVf2Id5OYcC9d+fVlQleZDX/y/JMFsMseFr9wxZBrk9Uin TtPLA1p5DheJrHp3u751Cv0xY1pe0NUt5oYPVSssUTBTP9KgtE2hBl5v6mdDYSalxsVQYeH Bav+rY+DCzyhfbR4AljYKhhBC8PY8JiL6JPoIK1N8woFlDIWCyiLisRmrJcipvr0DKIg43d SXtZU6cPB8kfooDDLAomA== X-UI-Out-Filterresults: notjunk:1;V01:K0:dwua6RmgGjM=:eAia7SCuj9ryboceeEP9uh bcqndt2S+FS6pCfM/CMVsStc+gmMkYdPTNyXywTRRFaboINrl2bd/zXOnJMx3aERB9YiReSnF UHgflQm3ui286B4Qn//QPiWeyWS2xRrLDvB1w6Z0jUhl8ZLMTwwGCgYGm+Dk7EhnF5y9JykrM dv45OSskY5Sn/QRkg/ysFrLlgxnevN8DuQfmNLSwFTrJjNMKqoD4BQrBmHHd57oPXf6Ei8PgO GiltGy/kddCgscdmstqtkkkROLB0tw2jspHGU9gpopWq1yeW/6Q7DAYjbJLvhbSGM7YMdcCpj /IPIvN715YsfrUKtVHdaElU250a/qjRu20kF6FdxDZ91/LYv8cVWPMNf3vd95ndiu0oSnAc4r 9cW47ol1CZG82yJcSXGHDvLJyMNHqCBg7g/Wlrl2nUzzWiZcNurLGoZbOdzZNWhQK0xXEo/FH boB7czF4XUWdmmwSxMdLuTTZgeuh+lbubF6XMVqIZ4r+wqJBzkScnojdg9a/Wyb+gvNRy/swS +XoVVYBPEdISziNNpjz7DFElRXaZZiZzv6YDLnE8Msddj8UqYkdJ3qeyD9uW0mT0Mmx8I4Nam oN/T/Vknx2Yis/nClHyoe3VnC+KAee6UmUWU90d2pEgH1IdnnOWIMnRCG8vzsbS7oSJOLym66 VNFW1+PHd8PXsgjdX+FW0+jYmplAiz7OPCbutjAGAm0ozSNdwxuXkvppy6rSV9fmKXU5NkQkg hELy2HELw54b51jFiuciwTC+1bEdYRr/bYkpOM1N1FfxERYPVctKydwsiUEvWB+aH16Zdw20X hHq7r+2Uhja/nVOhhWhcF4mmyz5A7HRdPiR+3j0brB4nWS1xhw= 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 20:33:07 +0100 Add jump targets 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/cs5530.c | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/sound/pci/cs5530.c b/sound/pci/cs5530.c index 0a8cf94c4858..88f253489075 100644 --- a/sound/pci/cs5530.c +++ b/sound/pci/cs5530.c @@ -124,8 +124,8 @@ static int snd_cs5530_create(struct snd_card *card, chip = kzalloc(sizeof(*chip), GFP_KERNEL); if (chip == NULL) { - pci_disable_device(pci); - return -ENOMEM; + err = -ENOMEM; + goto disable_device; } chip->card = card; @@ -134,15 +134,14 @@ static int snd_cs5530_create(struct snd_card *card, err = pci_request_regions(pci, "CS5530"); if (err < 0) { kfree(chip); - pci_disable_device(pci); - return err; + goto disable_device; } chip->pci_base = pci_resource_start(pci, 0); mem = pci_ioremap_bar(pci, 0); if (mem == NULL) { - snd_cs5530_free(chip); - return -EBUSY; + err = -EBUSY; + goto free_sound_chip; } map = readw(mem + 0x18); @@ -163,8 +162,7 @@ static int snd_cs5530_create(struct snd_card *card, dev_info(card->dev, "XpressAudio at 0x%lx\n", sb_base); else { dev_err(card->dev, "Could not find XpressAudio!\n"); - snd_cs5530_free(chip); - return -ENODEV; + goto e_nodev; } if (map & (1<<5)) @@ -183,8 +181,7 @@ static int snd_cs5530_create(struct snd_card *card, dma16 = 7; else { dev_err(card->dev, "No 16bit DMA enabled\n"); - snd_cs5530_free(chip); - return -ENODEV; + goto e_nodev; } if (dma8 & 0x01) @@ -195,8 +192,7 @@ static int snd_cs5530_create(struct snd_card *card, dma8 = 3; else { dev_err(card->dev, "No 8bit DMA enabled\n"); - snd_cs5530_free(chip); - return -ENODEV; + goto e_nodev; } if (irq & 1) @@ -209,8 +205,7 @@ static int snd_cs5530_create(struct snd_card *card, irq = 10; else { dev_err(card->dev, "SoundBlaster IRQ not set\n"); - snd_cs5530_free(chip); - return -ENODEV; + goto e_nodev; } dev_info(card->dev, "IRQ: %d DMA8: %d DMA16: %d\n", irq, dma8, dma16); @@ -219,32 +214,37 @@ static int snd_cs5530_create(struct snd_card *card, dma16, SB_HW_CS5530, &chip->sb); if (err < 0) { dev_err(card->dev, "Could not create SoundBlaster\n"); - snd_cs5530_free(chip); - return err; + goto free_sound_chip; } err = snd_sb16dsp_pcm(chip->sb, 0); if (err < 0) { dev_err(card->dev, "Could not create PCM\n"); - snd_cs5530_free(chip); - return err; + goto free_sound_chip; } err = snd_sbmixer_new(chip->sb); if (err < 0) { dev_err(card->dev, "Could not create Mixer\n"); - snd_cs5530_free(chip); - return err; + goto free_sound_chip; } err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); - if (err < 0) { - snd_cs5530_free(chip); - return err; - } + if (err < 0) + goto free_sound_chip; *rchip = chip; return 0; + +disable_device: + pci_disable_device(pci); + return err; + +e_nodev: + err = -ENODEV; +free_sound_chip: + snd_cs5530_free(chip); + return err; } static int snd_cs5530_probe(struct pci_dev *pci, -- 2.15.0