ALSA: pcsp: Use common error handling code in snd_card_pcsp_probe()
authorMarkus Elfring <elfring@users.sourceforge.net>
Tue, 22 Aug 2017 15:33:33 +0000 (17:33 +0200)
committerTakashi Iwai <tiwai@suse.de>
Tue, 22 Aug 2017 15:49:21 +0000 (17:49 +0200)
Add a jump target so that a bit of exception handling can be better reused
at the end of this function.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/drivers/pcsp/pcsp.c

index 72e2d00..0dd3f46 100644 (file)
@@ -108,22 +108,17 @@ static int snd_card_pcsp_probe(int devnum, struct device *dev)
                return err;
 
        err = snd_pcsp_create(card);
-       if (err < 0) {
-               snd_card_free(card);
-               return err;
-       }
+       if (err < 0)
+               goto free_card;
+
        if (!nopcm) {
                err = snd_pcsp_new_pcm(&pcsp_chip);
-               if (err < 0) {
-                       snd_card_free(card);
-                       return err;
-               }
+               if (err < 0)
+                       goto free_card;
        }
        err = snd_pcsp_new_mixer(&pcsp_chip, nopcm);
-       if (err < 0) {
-               snd_card_free(card);
-               return err;
-       }
+       if (err < 0)
+               goto free_card;
 
        strcpy(card->driver, "PC-Speaker");
        strcpy(card->shortname, "pcsp");
@@ -131,12 +126,14 @@ static int snd_card_pcsp_probe(int devnum, struct device *dev)
                pcsp_chip.port);
 
        err = snd_card_register(card);
-       if (err < 0) {
-               snd_card_free(card);
-               return err;
-       }
+       if (err < 0)
+               goto free_card;
 
        return 0;
+
+free_card:
+       snd_card_free(card);
+       return err;
 }
 
 static int alsa_card_pcsp_init(struct device *dev)