diff options
Diffstat (limited to 'sound/pci/sonicvibes.c')
| -rw-r--r-- | sound/pci/sonicvibes.c | 12 | 
1 files changed, 10 insertions, 2 deletions
diff --git a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c index a8abb15e3c3a..7fbdb703bfcd 100644 --- a/sound/pci/sonicvibes.c +++ b/sound/pci/sonicvibes.c @@ -1188,6 +1188,7 @@ SONICVIBES_SINGLE("Joystick Speed", 0, SV_IREG_GAME_PORT, 1, 15, 0);  static int snd_sonicvibes_create_gameport(struct sonicvibes *sonic)  {  	struct gameport *gp; +	int err;  	sonic->gameport = gp = gameport_allocate_port();  	if (!gp) { @@ -1203,7 +1204,10 @@ static int snd_sonicvibes_create_gameport(struct sonicvibes *sonic)  	gameport_register_port(gp); -	snd_ctl_add(sonic->card, snd_ctl_new1(&snd_sonicvibes_game_control, sonic)); +	err = snd_ctl_add(sonic->card, +		snd_ctl_new1(&snd_sonicvibes_game_control, sonic)); +	if (err < 0) +		return err;  	return 0;  } @@ -1515,7 +1519,11 @@ static int snd_sonic_probe(struct pci_dev *pci,  		return err;  	} -	snd_sonicvibes_create_gameport(sonic); +	err = snd_sonicvibes_create_gameport(sonic); +	if (err < 0) { +		snd_card_free(card); +		return err; +	}  	if ((err = snd_card_register(card)) < 0) {  		snd_card_free(card);  |