ALSA: mpu401: Use common error handling code in snd_mpu401_uart_new()

Add a jump target so that a bit of exception handling can be better reused
at the end of this function.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Markus Elfring 2017-08-12 20:40:17 +02:00 committed by Takashi Iwai
parent 30b2aeb8a8
commit ec1f43c83b
1 changed files with 9 additions and 6 deletions

View File

@ -545,8 +545,8 @@ int snd_mpu401_uart_new(struct snd_card *card, int device,
return err;
mpu = kzalloc(sizeof(*mpu), GFP_KERNEL);
if (mpu == NULL) {
snd_device_free(card, rmidi);
return -ENOMEM;
err = -ENOMEM;
goto free_device;
}
rmidi->private_data = mpu;
rmidi->private_free = snd_mpu401_uart_free;
@ -562,8 +562,8 @@ int snd_mpu401_uart_new(struct snd_card *card, int device,
snd_printk(KERN_ERR "mpu401_uart: "
"unable to grab port 0x%lx size %d\n",
port, res_size);
snd_device_free(card, rmidi);
return -EBUSY;
err = -EBUSY;
goto free_device;
}
}
if (info_flags & MPU401_INFO_MMIO) {
@ -583,8 +583,8 @@ int snd_mpu401_uart_new(struct snd_card *card, int device,
"MPU401 UART", (void *) mpu)) {
snd_printk(KERN_ERR "mpu401_uart: "
"unable to grab IRQ %d\n", irq);
snd_device_free(card, rmidi);
return -EBUSY;
err = -EBUSY;
goto free_device;
}
}
if (irq < 0 && !(info_flags & MPU401_INFO_IRQ_HOOK))
@ -612,6 +612,9 @@ int snd_mpu401_uart_new(struct snd_card *card, int device,
if (rrawmidi)
*rrawmidi = rmidi;
return 0;
free_device:
snd_device_free(card, rmidi);
return err;
}
EXPORT_SYMBOL(snd_mpu401_uart_new);