diff mbox

ALSA: sonicvibes: add error handling for snd_ctl_add

Message ID 1528704521-34060-1-git-send-email-jiazhouyang09@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Zhouyang Jia June 11, 2018, 8:08 a.m. UTC
When snd_ctl_add fails, the lack of error-handling code may
cause unexpected results.

This patch adds error-handling code after calling snd_ctl_add.

Signed-off-by: Zhouyang Jia <jiazhouyang09@gmail.com>
---
 sound/pci/sonicvibes.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Takashi Iwai June 11, 2018, 1:26 p.m. UTC | #1
On Mon, 11 Jun 2018 10:08:40 +0200,
Zhouyang Jia wrote:
> 
> When snd_ctl_add fails, the lack of error-handling code may
> cause unexpected results.
> 
> This patch adds error-handling code after calling snd_ctl_add.
> 
> Signed-off-by: Zhouyang Jia <jiazhouyang09@gmail.com>

I postpone this one because the change won't give anything as is
although this change itself is correct.  If you look at the code
closely, the caller of snd_sonicvibes_create_gameport() ignores the
return value.
So we need to fix two places.


thanks,

Takashi
Zhouyang Jia June 14, 2018, 4:33 a.m. UTC | #2
Hi,

I'll fix this in v2. Thanks for your kind reply.

Best,
Zhouyang

2018-06-11 21:26 GMT+08:00 Takashi Iwai <tiwai@suse.de>:

> On Mon, 11 Jun 2018 10:08:40 +0200,
> Zhouyang Jia wrote:
> >
> > When snd_ctl_add fails, the lack of error-handling code may
> > cause unexpected results.
> >
> > This patch adds error-handling code after calling snd_ctl_add.
> >
> > Signed-off-by: Zhouyang Jia <jiazhouyang09@gmail.com>
>
> I postpone this one because the change won't give anything as is
> although this change itself is correct.  If you look at the code
> closely, the caller of snd_sonicvibes_create_gameport() ignores the
> return value.
> So we need to fix two places.
>
>
> thanks,
>
> Takashi
>
Takashi Iwai June 14, 2018, 11:30 a.m. UTC | #3
On Thu, 14 Jun 2018 13:22:18 +0200,
Zhouyang Jia wrote:
> 
> When snd_ctl_add fails, the lack of error-handling code may
> cause unexpected results.
> 
> This patch adds error-handling code after calling snd_ctl_add.
> 
> Signed-off-by: Zhouyang Jia <jiazhouyang09@gmail.com>
> ---
> v1->v2:
> - Check the return value of snd_sonicvibes_create_gameport.
> ---
>  sound/pci/sonicvibes.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c
> index a8abb15..75225b04 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,10 @@ static int snd_sonic_probe(struct pci_dev *pci,
>  		return err;
>  	}
>  
> -	snd_sonicvibes_create_gameport(sonic);
> +	if ((err = snd_sonicvibes_create_gameport(sonic)) < 0) {
> +		snd_card_free(card);
> +		return err;
> +        }

You don't need to inherit the old-fashioned style "if ((err = xxx)"
in a new code.  Check what checkpatch.pl complains.


thanks,

Takashi
diff mbox

Patch

diff --git a/sound/pci/sonicvibes.c b/sound/pci/sonicvibes.c
index a8abb15..57cb77a 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;
 }