ALSA: seq: oss: Use automatic cleanup of kfree()
authorTakashi Iwai <tiwai@suse.de>
Thu, 22 Feb 2024 11:15:06 +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-7-tiwai@suse.de
sound/core/seq/oss/seq_oss_init.c
sound/core/seq/oss/seq_oss_midi.c

index 76bf41c..676246f 100644 (file)
@@ -63,20 +63,18 @@ int __init
 snd_seq_oss_create_client(void)
 {
        int rc;
-       struct snd_seq_port_info *port;
+       struct snd_seq_port_info *port __free(kfree) = NULL;
        struct snd_seq_port_callback port_callback;
 
        port = kzalloc(sizeof(*port), GFP_KERNEL);
-       if (!port) {
-               rc = -ENOMEM;
-               goto __error;
-       }
+       if (!port)
+               return -ENOMEM;
 
        /* create ALSA client */
        rc = snd_seq_create_kernel_client(NULL, SNDRV_SEQ_CLIENT_OSS,
                                          "OSS sequencer");
        if (rc < 0)
-               goto __error;
+               return rc;
 
        system_client = rc;
 
@@ -104,14 +102,11 @@ snd_seq_oss_create_client(void)
                subs.dest.port = system_port;
                call_ctl(SNDRV_SEQ_IOCTL_SUBSCRIBE_PORT, &subs);
        }
-       rc = 0;
 
        /* look up midi devices */
        schedule_work(&async_lookup_work);
 
- __error:
-       kfree(port);
-       return rc;
+       return 0;
 }
 
 
index f2940b2..f8e247d 100644 (file)
@@ -64,16 +64,13 @@ static int send_midi_event(struct seq_oss_devinfo *dp, struct snd_seq_event *ev,
 int
 snd_seq_oss_midi_lookup_ports(int client)
 {
-       struct snd_seq_client_info *clinfo;
-       struct snd_seq_port_info *pinfo;
+       struct snd_seq_client_info *clinfo __free(kfree) = NULL;
+       struct snd_seq_port_info *pinfo __free(kfree) = NULL;
 
        clinfo = kzalloc(sizeof(*clinfo), GFP_KERNEL);
        pinfo = kzalloc(sizeof(*pinfo), GFP_KERNEL);
-       if (! clinfo || ! pinfo) {
-               kfree(clinfo);
-               kfree(pinfo);
+       if (!clinfo || !pinfo)
                return -ENOMEM;
-       }
        clinfo->client = -1;
        while (snd_seq_kernel_client_ctl(client, SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT, clinfo) == 0) {
                if (clinfo->client == client)
@@ -83,8 +80,6 @@ snd_seq_oss_midi_lookup_ports(int client)
                while (snd_seq_kernel_client_ctl(client, SNDRV_SEQ_IOCTL_QUERY_NEXT_PORT, pinfo) == 0)
                        snd_seq_oss_midi_check_new_port(pinfo);
        }
-       kfree(clinfo);
-       kfree(pinfo);
        return 0;
 }