From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752805AbdKMMxz (ORCPT ); Mon, 13 Nov 2017 07:53:55 -0500 Received: from mout.web.de ([217.72.192.78]:62765 "EHLO mout.web.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752645AbdKMMxy (ORCPT ); Mon, 13 Nov 2017 07:53:54 -0500 Subject: [PATCH 2/3] ALSA: cs4281: Use common error handling code in snd_cs4281_probe() From: SF Markus Elfring To: alsa-devel@alsa-project.org, Bhumika Goyal , Fabian Frederick , Jaroslav Kysela , Takashi Iwai , Takashi Sakamoto Cc: LKML , kernel-janitors@vger.kernel.org References: Message-ID: <79d61453-352c-c5a7-a306-4c4304a74195@users.sourceforge.net> Date: Mon, 13 Nov 2017 13:52:41 +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:sq2O1FEnoBbaz5TKbqlICf4ZMLpk+e4SYRWmkT/CsB5o7KzZ7Pg RrK+d96oBYT41sue1g4hBS5toS1dnYbP78LTASA4PS1lctaiXJuB2rsSqSjTY0r8HfS0Aoy MdHCwGcV8RVOtK5gesXuqen2bFBzCcmY4NWG9woKzsKlKyNQLzaICqVhHJTmoStNA7zLKMu Mha5VHy/eIjA/CU63bfYg== X-UI-Out-Filterresults: notjunk:1;V01:K0:81qvAKNkwkk=:XVBj5dFWIyzZ2tsI6th4CM Bmr1sp+g3K/p434ab6au6KIhHMOJ6JTJLJS+nwT/pWdAOWlHa/R7Eed3tXCWy9iEhSiZmMDSk afLsiyqMZU91geFTGNU2AzHifBps3nEbbEo9klAaCvcFIKtQHr1STLEFGKXini88F702hJJCy qnkPjN1X5Z3by+z4eS0mKUGOM9U7CxshFujISdhkxl4x0QlbJkfhJY/akKQcuJ25dTrcnia/b v+FWUVDESUWX1dUSj//rbleNK3uDclQ3zG/NYgfFZeSVNZ6HnO9Fil/aMNEEkSIGl5PpkkRIO TfBtExwOuFb1c0FFwC6I7uj+apT23KHKqWuwVWt+ewcxLFUWOLJM6JMnzfzf1o+UcWHDP5j2U kyNufrvvO6LqHW0TjLIiUWDG053vKRkIZp1qyddCot8ng7NtC0OojdnzrZOWnoqAf4zR6MGmH bw/+/wJg5B3SLyOECv6OKyUTxPjTKIQhDrzLYx01trhUTRQDLInOU6i60w+RlSd9lJUXRi6zy RyHIMBhFVgBFt+Ig4mRpv1IhCHBxoXGscWUkgbhSuMsCRjsOZ/byAU1zbT5Auh2cop+VWXUsZ VbmXouYGP9V/XCLiQnn5cEinOjThuh60MxZQOGPlfq6HvKMyQr0mI20cNHBbf/Zc3CvpbN7Vt tc+Whs93XeDfWq3TcB4lYrBGpjig+rC4irOa93ZFio0RPDyUcONAP6lOxat0ZS4UVKBYatTmc OlPv1dLMU+z8V71iKTnr9MzpzG9yea6tJpPY85wUjRp9rQzDpbc0Zp3Gje7sBlHt/U6L9Gp0+ 3XpdFgWLIB6jh7cHstttdT4F7EBTLe9awoXJZO4ZvNYUVa9PKY= 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 13:10:11 +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/cs4281.c | 52 ++++++++++++++++++++++++---------------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/sound/pci/cs4281.c b/sound/pci/cs4281.c index cf0bcab2a36b..ed6b97dbd1cc 100644 --- a/sound/pci/cs4281.c +++ b/sound/pci/cs4281.c @@ -1934,40 +1934,34 @@ static int snd_cs4281_probe(struct pci_dev *pci, return err; err = snd_cs4281_create(card, pci, &chip, dual_codec[dev]); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + card->private_data = chip; err = snd_cs4281_mixer(chip); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + err = snd_cs4281_pcm(chip, 0); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + err = snd_cs4281_midi(chip, 0); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + err = snd_opl3_new(card, OPL3_HW_OPL3_CS4281, &opl3); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + opl3->private_data = chip; opl3->command = snd_cs4281_opl3_command; snd_opl3_init(opl3); err = snd_opl3_hwdep_new(opl3, 0, 1, NULL); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto free_card; + snd_cs4281_create_gameport(chip); strcpy(card->driver, "CS4281"); strcpy(card->shortname, "Cirrus Logic CS4281"); @@ -1977,14 +1971,16 @@ static int snd_cs4281_probe(struct pci_dev *pci, chip->irq); 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_cs4281_remove(struct pci_dev *pci) -- 2.15.0