ALSA: ymfpci: Use common error handling code in snd_ymfpci_create()

* 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.

* The script "checkpatch.pl" pointed information out like the following.

ERROR: do not use assignment in if condition

Thus fix a few source code places.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>

authored by

Markus Elfring and committed by
Takashi Iwai
ba2186e4 1f5ca8ec

+21 -20
+21 -20
sound/pci/ymfpci/ymfpci_main.c
··· 2399 2399 dev_err(chip->card->dev, 2400 2400 "unable to grab memory region 0x%lx-0x%lx\n", 2401 2401 chip->reg_area_phys, chip->reg_area_phys + 0x8000 - 1); 2402 - snd_ymfpci_free(chip); 2403 - return -EBUSY; 2402 + err = -EBUSY; 2403 + goto free_chip; 2404 2404 } 2405 2405 if (request_irq(pci->irq, snd_ymfpci_interrupt, IRQF_SHARED, 2406 2406 KBUILD_MODNAME, chip)) { 2407 2407 dev_err(chip->card->dev, "unable to grab IRQ %d\n", pci->irq); 2408 - snd_ymfpci_free(chip); 2409 - return -EBUSY; 2408 + err = -EBUSY; 2409 + goto free_chip; 2410 2410 } 2411 2411 chip->irq = pci->irq; 2412 2412 2413 2413 snd_ymfpci_aclink_reset(pci); 2414 2414 if (snd_ymfpci_codec_ready(chip, 0) < 0) { 2415 - snd_ymfpci_free(chip); 2416 - return -EIO; 2415 + err = -EIO; 2416 + goto free_chip; 2417 2417 } 2418 2418 2419 2419 err = snd_ymfpci_request_firmware(chip); 2420 2420 if (err < 0) { 2421 2421 dev_err(chip->card->dev, "firmware request failed: %d\n", err); 2422 - snd_ymfpci_free(chip); 2423 - return err; 2422 + goto free_chip; 2424 2423 } 2425 2424 snd_ymfpci_download_image(chip); 2426 2425 2427 2426 udelay(100); /* seems we need a delay after downloading image.. */ 2428 2427 2429 2428 if (snd_ymfpci_memalloc(chip) < 0) { 2430 - snd_ymfpci_free(chip); 2431 - return -EIO; 2429 + err = -EIO; 2430 + goto free_chip; 2432 2431 } 2433 2432 2434 - if ((err = snd_ymfpci_ac3_init(chip)) < 0) { 2435 - snd_ymfpci_free(chip); 2436 - return err; 2437 - } 2433 + err = snd_ymfpci_ac3_init(chip); 2434 + if (err < 0) 2435 + goto free_chip; 2438 2436 2439 2437 #ifdef CONFIG_PM_SLEEP 2440 2438 chip->saved_regs = kmalloc(YDSXGR_NUM_SAVED_REGS * sizeof(u32), 2441 2439 GFP_KERNEL); 2442 2440 if (chip->saved_regs == NULL) { 2443 - snd_ymfpci_free(chip); 2444 - return -ENOMEM; 2441 + err = -ENOMEM; 2442 + goto free_chip; 2445 2443 } 2446 2444 #endif 2447 2445 2448 - if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { 2449 - snd_ymfpci_free(chip); 2450 - return err; 2451 - } 2446 + err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops); 2447 + if (err < 0) 2448 + goto free_chip; 2452 2449 2453 2450 snd_ymfpci_proc_init(card, chip); 2454 2451 2455 2452 *rchip = chip; 2456 2453 return 0; 2454 + 2455 + free_chip: 2456 + snd_ymfpci_free(chip); 2457 + return err; 2457 2458 }