Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2fa51107 authored by Takashi Iwai's avatar Takashi Iwai Committed by Takashi Iwai
Browse files

ALSA: Return proper error code at probe in sound/pcmcia/*



Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent aa3d75d8
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -121,13 +121,14 @@ static int snd_pdacf_probe(struct pcmcia_device *link)
	pdacf = snd_pdacf_create(card);
	if (!pdacf) {
		snd_card_free(card);
		return -EIO;
		return -ENOMEM;
	}

	if (snd_device_new(card, SNDRV_DEV_LOWLEVEL, pdacf, &ops) < 0) {
	err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, pdacf, &ops);
	if (err < 0) {
		kfree(pdacf);
		snd_card_free(card);
		return -ENODEV;
		return err;
	}

	snd_card_set_dev(card, &handle_to_dev(link));
+14 −10
Original line number Diff line number Diff line
@@ -130,23 +130,26 @@ static struct snd_vx_hardware vxp440_hw = {
/*
 * create vxpocket instance
 */
static struct snd_vxpocket *snd_vxpocket_new(struct snd_card *card, int ibl,
					     struct pcmcia_device *link)
static int snd_vxpocket_new(struct snd_card *card, int ibl,
			    struct pcmcia_device *link,
			    struct snd_vxpocket **chip_ret)
{
	struct vx_core *chip;
	struct snd_vxpocket *vxp;
	static struct snd_device_ops ops = {
		.dev_free =	snd_vxpocket_dev_free,
	};
	int err;

	chip = snd_vx_create(card, &vxpocket_hw, &snd_vxpocket_ops,
			     sizeof(struct snd_vxpocket) - sizeof(struct vx_core));
	if (!chip)
		return NULL;
		return -ENOMEM;

	if (snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops) < 0) {
	err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
	if (err < 0) {
		kfree(chip);
		return NULL;
		return err;
	}
	chip->ibl.size = ibl;

@@ -169,7 +172,8 @@ static struct snd_vxpocket *snd_vxpocket_new(struct snd_card *card, int ibl,
	link->conf.ConfigIndex = 1;
	link->conf.Present = PRESENT_OPTION;

	return vxp;
	*chip_ret = vxp;
	return 0;
}


@@ -313,10 +317,10 @@ static int vxpocket_probe(struct pcmcia_device *p_dev)
		return err;
	}

	vxp = snd_vxpocket_new(card, ibl[i], p_dev);
	if (! vxp) {
	err = snd_vxpocket_new(card, ibl[i], p_dev, &vxp);
	if (err < 0) {
		snd_card_free(card);
		return -ENODEV;
		return err;
	}
	card->private_data = vxp;