ALSA: seq: ump: Use guard() for locking
authorTakashi Iwai <tiwai@suse.de>
Tue, 27 Feb 2024 08:53:00 +0000 (09:53 +0100)
committerTakashi Iwai <tiwai@suse.de>
Wed, 28 Feb 2024 14:01:22 +0000 (15:01 +0100)
We can simplify the code gracefully with new guard() macro and co for
automatic cleanup of locks.

Only the code refactoring, and no functional changes.

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

index ccac2d3a9fbcb1f9fd5bf05ee4bf2dd11aa36b1f..c627d72f7fe2029579a9bc41cfea5fdcbe02ee70 100644 (file)
@@ -115,21 +115,19 @@ static int seq_ump_process_event(struct snd_seq_event *ev, int direct,
 static int seq_ump_client_open(struct seq_ump_client *client, int dir)
 {
        struct snd_ump_endpoint *ump = client->ump;
-       int err = 0;
+       int err;
 
-       mutex_lock(&ump->open_mutex);
+       guard(mutex)(&ump->open_mutex);
        if (dir == STR_OUT && !client->opened[dir]) {
                err = snd_rawmidi_kernel_open(&ump->core, 0,
                                              SNDRV_RAWMIDI_LFLG_OUTPUT |
                                              SNDRV_RAWMIDI_LFLG_APPEND,
                                              &client->out_rfile);
                if (err < 0)
-                       goto unlock;
+                       return err;
        }
        client->opened[dir]++;
- unlock:
-       mutex_unlock(&ump->open_mutex);
-       return err;
+       return 0;
 }
 
 /* close the rawmidi */
@@ -137,11 +135,10 @@ static int seq_ump_client_close(struct seq_ump_client *client, int dir)
 {
        struct snd_ump_endpoint *ump = client->ump;
 
-       mutex_lock(&ump->open_mutex);
+       guard(mutex)(&ump->open_mutex);
        if (!--client->opened[dir])
                if (dir == STR_OUT)
                        snd_rawmidi_kernel_release(&client->out_rfile);
-       mutex_unlock(&ump->open_mutex);
        return 0;
 }