Skip to content

Commit

Permalink
ALSA: Return proper error code at probe in sound/pcmcia/*
Browse files Browse the repository at this point in the history
Signed-off-by: Takashi Iwai <[email protected]>
  • Loading branch information
Takashi Iwai authored and tiwai committed Jan 12, 2009
1 parent aa3d75d commit 2fa5110
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 13 deletions.
7 changes: 4 additions & 3 deletions sound/pcmcia/pdaudiocf/pdaudiocf.c
Original file line number Diff line number Diff line change
Expand Up @@ -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));
Expand Down
24 changes: 14 additions & 10 deletions sound/pcmcia/vx/vxpocket.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
if (!chip)
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;

Expand All @@ -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;
}


Expand Down Expand Up @@ -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;

Expand Down

0 comments on commit 2fa5110

Please sign in to comment.