]> www.infradead.org Git - users/hch/misc.git/commitdiff
ALSA: line6: Use guard() for spin locks
authorTakashi Iwai <tiwai@suse.de>
Wed, 10 Sep 2025 11:09:24 +0000 (13:09 +0200)
committerTakashi Iwai <tiwai@suse.de>
Wed, 10 Sep 2025 11:20:01 +0000 (13:20 +0200)
Clean up the code using guard() for spin locks.

Merely code refactoring, and no behavior change.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/line6/capture.c
sound/usb/line6/driver.c
sound/usb/line6/midi.c
sound/usb/line6/pcm.c

index 84a9b7b76f43ca1433dc1f746121183992702192..9ef4faa006a038561c357c9483b7fc8228f3d226 100644 (file)
@@ -145,8 +145,6 @@ void line6_capture_check_period(struct snd_line6_pcm *line6pcm, int length)
 static void audio_in_callback(struct urb *urb)
 {
        int i, index, length = 0, shutdown = 0;
-       unsigned long flags;
-
        struct snd_line6_pcm *line6pcm = (struct snd_line6_pcm *)urb->context;
 
        line6pcm->in.last_frame = urb->start_frame;
@@ -156,7 +154,7 @@ static void audio_in_callback(struct urb *urb)
                if (urb == line6pcm->in.urbs[index])
                        break;
 
-       spin_lock_irqsave(&line6pcm->in.lock, flags);
+       guard(spinlock_irqsave)(&line6pcm->in.lock);
 
        for (i = 0; i < LINE6_ISO_PACKETS; ++i) {
                char *fbuf;
@@ -211,8 +209,6 @@ static void audio_in_callback(struct urb *urb)
                    test_bit(LINE6_STREAM_PCM, &line6pcm->in.running))
                        line6_capture_check_period(line6pcm, length);
        }
-
-       spin_unlock_irqrestore(&line6pcm->in.lock, flags);
 }
 
 /* open capture callback */
index c505c1cba1623364d316045d9166f1c9ff56ffdc..e97368c31417cd2a9ec5dd9eb357c3b54409f3b2 100644 (file)
@@ -286,31 +286,30 @@ static void line6_data_received(struct urb *urb)
 {
        struct usb_line6 *line6 = (struct usb_line6 *)urb->context;
        struct midi_buffer *mb = &line6->line6midi->midibuf_in;
-       unsigned long flags;
        int done;
 
        if (urb->status == -ESHUTDOWN)
                return;
 
        if (line6->properties->capabilities & LINE6_CAP_CONTROL_MIDI) {
-               spin_lock_irqsave(&line6->line6midi->lock, flags);
-               done =
-                       line6_midibuf_write(mb, urb->transfer_buffer, urb->actual_length);
-
-               if (done < urb->actual_length) {
-                       line6_midibuf_ignore(mb, done);
-                       dev_dbg(line6->ifcdev, "%d %d buffer overflow - message skipped\n",
-                               done, urb->actual_length);
+               scoped_guard(spinlock_irqsave, &line6->line6midi->lock) {
+                       done =
+                               line6_midibuf_write(mb, urb->transfer_buffer, urb->actual_length);
+
+                       if (done < urb->actual_length) {
+                               line6_midibuf_ignore(mb, done);
+                               dev_dbg(line6->ifcdev, "%d %d buffer overflow - message skipped\n",
+                                       done, urb->actual_length);
+                       }
                }
-               spin_unlock_irqrestore(&line6->line6midi->lock, flags);
 
                for (;;) {
-                       spin_lock_irqsave(&line6->line6midi->lock, flags);
-                       done =
-                               line6_midibuf_read(mb, line6->buffer_message,
-                                                  LINE6_MIDI_MESSAGE_MAXLEN,
-                                                  LINE6_MIDIBUF_READ_RX);
-                       spin_unlock_irqrestore(&line6->line6midi->lock, flags);
+                       scoped_guard(spinlock_irqsave, &line6->line6midi->lock) {
+                               done =
+                                       line6_midibuf_read(mb, line6->buffer_message,
+                                                          LINE6_MIDI_MESSAGE_MAXLEN,
+                                                          LINE6_MIDIBUF_READ_RX);
+                       }
 
                        if (done <= 0)
                                break;
index 1d77794b4490bdc750b2d54a375b9a719ce319c0..4731293728e63e0ab990f9ab51ad7c7231a718e0 100644 (file)
@@ -72,7 +72,6 @@ static void line6_midi_transmit(struct snd_rawmidi_substream *substream)
 */
 static void midi_sent(struct urb *urb)
 {
-       unsigned long flags;
        int status;
        int num;
        struct usb_line6 *line6 = (struct usb_line6 *)urb->context;
@@ -84,7 +83,7 @@ static void midi_sent(struct urb *urb)
        if (status == -ESHUTDOWN)
                return;
 
-       spin_lock_irqsave(&line6->line6midi->lock, flags);
+       guard(spinlock_irqsave)(&line6->line6midi->lock);
        num = --line6->line6midi->num_active_send_urbs;
 
        if (num == 0) {
@@ -94,8 +93,6 @@ static void midi_sent(struct urb *urb)
 
        if (num == 0)
                wake_up(&line6->line6midi->send_wait);
-
-       spin_unlock_irqrestore(&line6->line6midi->lock, flags);
 }
 
 /*
@@ -158,17 +155,14 @@ static int line6_midi_output_close(struct snd_rawmidi_substream *substream)
 static void line6_midi_output_trigger(struct snd_rawmidi_substream *substream,
                                      int up)
 {
-       unsigned long flags;
        struct usb_line6 *line6 =
            line6_rawmidi_substream_midi(substream)->line6;
 
        line6->line6midi->substream_transmit = substream;
-       spin_lock_irqsave(&line6->line6midi->lock, flags);
+       guard(spinlock_irqsave)(&line6->line6midi->lock);
 
        if (line6->line6midi->num_active_send_urbs == 0)
                line6_midi_transmit(substream);
-
-       spin_unlock_irqrestore(&line6->line6midi->lock, flags);
 }
 
 static void line6_midi_output_drain(struct snd_rawmidi_substream *substream)
index 81e6d5e05135ad3944f7c67525f683048dd43541..f61d9f6cf754c8f588553ef43e8026b211e8a1c2 100644 (file)
@@ -182,11 +182,10 @@ static void line6_buffer_release(struct snd_line6_pcm *line6pcm,
 static int line6_stream_start(struct snd_line6_pcm *line6pcm, int direction,
                              int type)
 {
-       unsigned long flags;
        struct line6_pcm_stream *pstr = get_stream(line6pcm, direction);
        int ret = 0;
 
-       spin_lock_irqsave(&pstr->lock, flags);
+       guard(spinlock_irqsave)(&pstr->lock);
        if (!test_and_set_bit(type, &pstr->running) &&
            !(pstr->active_urbs || pstr->unlink_urbs)) {
                pstr->count = 0;
@@ -199,7 +198,6 @@ static int line6_stream_start(struct snd_line6_pcm *line6pcm, int direction,
 
        if (ret < 0)
                clear_bit(type, &pstr->running);
-       spin_unlock_irqrestore(&pstr->lock, flags);
        return ret;
 }
 
@@ -207,21 +205,20 @@ static int line6_stream_start(struct snd_line6_pcm *line6pcm, int direction,
 static void line6_stream_stop(struct snd_line6_pcm *line6pcm, int direction,
                          int type)
 {
-       unsigned long flags;
        struct line6_pcm_stream *pstr = get_stream(line6pcm, direction);
 
-       spin_lock_irqsave(&pstr->lock, flags);
-       clear_bit(type, &pstr->running);
-       if (!pstr->running) {
-               spin_unlock_irqrestore(&pstr->lock, flags);
-               line6_unlink_audio_urbs(line6pcm, pstr);
-               spin_lock_irqsave(&pstr->lock, flags);
-               if (direction == SNDRV_PCM_STREAM_CAPTURE) {
-                       line6pcm->prev_fbuf = NULL;
-                       line6pcm->prev_fsize = 0;
-               }
+       scoped_guard(spinlock_irqsave, &pstr->lock) {
+               clear_bit(type, &pstr->running);
+               if (pstr->running)
+                       return;
+       }
+
+       line6_unlink_audio_urbs(line6pcm, pstr);
+       if (direction == SNDRV_PCM_STREAM_CAPTURE) {
+               guard(spinlock_irqsave)(&pstr->lock);
+               line6pcm->prev_fbuf = NULL;
+               line6pcm->prev_fsize = 0;
        }
-       spin_unlock_irqrestore(&pstr->lock, flags);
 }
 
 /* common PCM trigger callback */