[alsa-devel] [PATCH] azx_probe() cleanup
Replace 5 free-and-return-err blocks with goto-out-free ones. This makes the main logic more outstanding.
Signed-off-by: Wu Fengguang wfg@linux.intel.com --- sound/pci/hda/hda_intel.c | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-)
--- sound-2.6.orig/sound/pci/hda/hda_intel.c +++ sound-2.6/sound/pci/hda/hda_intel.c @@ -2317,40 +2317,30 @@ static int __devinit azx_probe(struct pc }
err = azx_create(card, pci, dev, pci_id->driver_data, &chip); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto out_free; card->private_data = chip;
/* create codec instances */ err = azx_codec_create(chip, model[dev], probe_mask[dev]); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto out_free;
/* create PCM streams */ err = snd_hda_build_pcms(chip->bus); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto out_free;
/* create mixer controls */ err = azx_mixer_create(chip); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto out_free;
snd_card_set_dev(card, &pci->dev);
err = snd_card_register(card); - if (err < 0) { - snd_card_free(card); - return err; - } + if (err < 0) + goto out_free;
pci_set_drvdata(pci, card); chip->running = 1; @@ -2359,6 +2349,9 @@ static int __devinit azx_probe(struct pc
dev++; return err; +out_free: + snd_card_free(card); + return err; }
static void __devexit azx_remove(struct pci_dev *pci)
At Thu, 20 Nov 2008 09:24:52 +0800, Wu Fengguang wrote:
Replace 5 free-and-return-err blocks with goto-out-free ones. This makes the main logic more outstanding.
Signed-off-by: Wu Fengguang wfg@linux.intel.com
Thanks, applied.
Takashi
participants (2)
-
Takashi Iwai
-
Wu Fengguang