ALSA: seq: virmidi: Use automatic cleanup of kfree()
authorTakashi Iwai <tiwai@suse.de>
Thu, 22 Feb 2024 11:15:07 +0000 (12:15 +0100)
committerTakashi Iwai <tiwai@suse.de>
Fri, 23 Feb 2024 09:57:31 +0000 (10:57 +0100)
There are common patterns where a temporary buffer is allocated and
freed at the exit, and those can be simplified with the recent cleanup
mechanism via __free(kfree).

No functional changes, only code refactoring.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://lore.kernel.org/r/20240222111509.28390-8-tiwai@suse.de
sound/core/seq/seq_virmidi.c

index 1678737f11be79e55d90c647c327839c86a891d5..35f93b43dd2acc45d4a6563d7d117a9e9527df47 100644 (file)
@@ -363,26 +363,22 @@ static int snd_virmidi_dev_attach_seq(struct snd_virmidi_dev *rdev)
 {
        int client;
        struct snd_seq_port_callback pcallbacks;
-       struct snd_seq_port_info *pinfo;
+       struct snd_seq_port_info *pinfo __free(kfree) = NULL;
        int err;
 
        if (rdev->client >= 0)
                return 0;
 
        pinfo = kzalloc(sizeof(*pinfo), GFP_KERNEL);
-       if (!pinfo) {
-               err = -ENOMEM;
-               goto __error;
-       }
+       if (!pinfo)
+               return -ENOMEM;
 
        client = snd_seq_create_kernel_client(rdev->card, rdev->device,
                                              "%s %d-%d", rdev->rmidi->name,
                                              rdev->card->number,
                                              rdev->device);
-       if (client < 0) {
-               err = client;
-               goto __error;
-       }
+       if (client < 0)
+               return client;
        rdev->client = client;
 
        /* create a port */
@@ -410,15 +406,11 @@ static int snd_virmidi_dev_attach_seq(struct snd_virmidi_dev *rdev)
        if (err < 0) {
                snd_seq_delete_kernel_client(client);
                rdev->client = -1;
-               goto __error;
+               return err;
        }
 
        rdev->port = pinfo->addr.port;
-       err = 0; /* success */
-
- __error:
-       kfree(pinfo);
-       return err;
+       return 0; /* success */
 }