Skip to content

Commit bdcdb4e

Browse files
committed
ALSA: line6: Use guard() for spin locks
Clean up the code using guard() for spin locks. Merely code refactoring, and no behavior change. Signed-off-by: Takashi Iwai <tiwai@suse.de>
1 parent d20cce1 commit bdcdb4e

4 files changed

Lines changed: 30 additions & 44 deletions

File tree

sound/usb/line6/capture.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,6 @@ void line6_capture_check_period(struct snd_line6_pcm *line6pcm, int length)
145145
static void audio_in_callback(struct urb *urb)
146146
{
147147
int i, index, length = 0, shutdown = 0;
148-
unsigned long flags;
149-
150148
struct snd_line6_pcm *line6pcm = (struct snd_line6_pcm *)urb->context;
151149

152150
line6pcm->in.last_frame = urb->start_frame;
@@ -156,7 +154,7 @@ static void audio_in_callback(struct urb *urb)
156154
if (urb == line6pcm->in.urbs[index])
157155
break;
158156

159-
spin_lock_irqsave(&line6pcm->in.lock, flags);
157+
guard(spinlock_irqsave)(&line6pcm->in.lock);
160158

161159
for (i = 0; i < LINE6_ISO_PACKETS; ++i) {
162160
char *fbuf;
@@ -211,8 +209,6 @@ static void audio_in_callback(struct urb *urb)
211209
test_bit(LINE6_STREAM_PCM, &line6pcm->in.running))
212210
line6_capture_check_period(line6pcm, length);
213211
}
214-
215-
spin_unlock_irqrestore(&line6pcm->in.lock, flags);
216212
}
217213

218214
/* open capture callback */

sound/usb/line6/driver.c

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -286,31 +286,30 @@ static void line6_data_received(struct urb *urb)
286286
{
287287
struct usb_line6 *line6 = (struct usb_line6 *)urb->context;
288288
struct midi_buffer *mb = &line6->line6midi->midibuf_in;
289-
unsigned long flags;
290289
int done;
291290

292291
if (urb->status == -ESHUTDOWN)
293292
return;
294293

295294
if (line6->properties->capabilities & LINE6_CAP_CONTROL_MIDI) {
296-
spin_lock_irqsave(&line6->line6midi->lock, flags);
297-
done =
298-
line6_midibuf_write(mb, urb->transfer_buffer, urb->actual_length);
299-
300-
if (done < urb->actual_length) {
301-
line6_midibuf_ignore(mb, done);
302-
dev_dbg(line6->ifcdev, "%d %d buffer overflow - message skipped\n",
303-
done, urb->actual_length);
295+
scoped_guard(spinlock_irqsave, &line6->line6midi->lock) {
296+
done =
297+
line6_midibuf_write(mb, urb->transfer_buffer, urb->actual_length);
298+
299+
if (done < urb->actual_length) {
300+
line6_midibuf_ignore(mb, done);
301+
dev_dbg(line6->ifcdev, "%d %d buffer overflow - message skipped\n",
302+
done, urb->actual_length);
303+
}
304304
}
305-
spin_unlock_irqrestore(&line6->line6midi->lock, flags);
306305

307306
for (;;) {
308-
spin_lock_irqsave(&line6->line6midi->lock, flags);
309-
done =
310-
line6_midibuf_read(mb, line6->buffer_message,
311-
LINE6_MIDI_MESSAGE_MAXLEN,
312-
LINE6_MIDIBUF_READ_RX);
313-
spin_unlock_irqrestore(&line6->line6midi->lock, flags);
307+
scoped_guard(spinlock_irqsave, &line6->line6midi->lock) {
308+
done =
309+
line6_midibuf_read(mb, line6->buffer_message,
310+
LINE6_MIDI_MESSAGE_MAXLEN,
311+
LINE6_MIDIBUF_READ_RX);
312+
}
314313

315314
if (done <= 0)
316315
break;

sound/usb/line6/midi.c

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ static void line6_midi_transmit(struct snd_rawmidi_substream *substream)
7272
*/
7373
static void midi_sent(struct urb *urb)
7474
{
75-
unsigned long flags;
7675
int status;
7776
int num;
7877
struct usb_line6 *line6 = (struct usb_line6 *)urb->context;
@@ -84,7 +83,7 @@ static void midi_sent(struct urb *urb)
8483
if (status == -ESHUTDOWN)
8584
return;
8685

87-
spin_lock_irqsave(&line6->line6midi->lock, flags);
86+
guard(spinlock_irqsave)(&line6->line6midi->lock);
8887
num = --line6->line6midi->num_active_send_urbs;
8988

9089
if (num == 0) {
@@ -94,8 +93,6 @@ static void midi_sent(struct urb *urb)
9493

9594
if (num == 0)
9695
wake_up(&line6->line6midi->send_wait);
97-
98-
spin_unlock_irqrestore(&line6->line6midi->lock, flags);
9996
}
10097

10198
/*
@@ -158,17 +155,14 @@ static int line6_midi_output_close(struct snd_rawmidi_substream *substream)
158155
static void line6_midi_output_trigger(struct snd_rawmidi_substream *substream,
159156
int up)
160157
{
161-
unsigned long flags;
162158
struct usb_line6 *line6 =
163159
line6_rawmidi_substream_midi(substream)->line6;
164160

165161
line6->line6midi->substream_transmit = substream;
166-
spin_lock_irqsave(&line6->line6midi->lock, flags);
162+
guard(spinlock_irqsave)(&line6->line6midi->lock);
167163

168164
if (line6->line6midi->num_active_send_urbs == 0)
169165
line6_midi_transmit(substream);
170-
171-
spin_unlock_irqrestore(&line6->line6midi->lock, flags);
172166
}
173167

174168
static void line6_midi_output_drain(struct snd_rawmidi_substream *substream)

sound/usb/line6/pcm.c

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -182,11 +182,10 @@ static void line6_buffer_release(struct snd_line6_pcm *line6pcm,
182182
static int line6_stream_start(struct snd_line6_pcm *line6pcm, int direction,
183183
int type)
184184
{
185-
unsigned long flags;
186185
struct line6_pcm_stream *pstr = get_stream(line6pcm, direction);
187186
int ret = 0;
188187

189-
spin_lock_irqsave(&pstr->lock, flags);
188+
guard(spinlock_irqsave)(&pstr->lock);
190189
if (!test_and_set_bit(type, &pstr->running) &&
191190
!(pstr->active_urbs || pstr->unlink_urbs)) {
192191
pstr->count = 0;
@@ -199,29 +198,27 @@ static int line6_stream_start(struct snd_line6_pcm *line6pcm, int direction,
199198

200199
if (ret < 0)
201200
clear_bit(type, &pstr->running);
202-
spin_unlock_irqrestore(&pstr->lock, flags);
203201
return ret;
204202
}
205203

206204
/* stop a PCM stream; this doesn't sync with the unlinked URBs */
207205
static void line6_stream_stop(struct snd_line6_pcm *line6pcm, int direction,
208206
int type)
209207
{
210-
unsigned long flags;
211208
struct line6_pcm_stream *pstr = get_stream(line6pcm, direction);
212209

213-
spin_lock_irqsave(&pstr->lock, flags);
214-
clear_bit(type, &pstr->running);
215-
if (!pstr->running) {
216-
spin_unlock_irqrestore(&pstr->lock, flags);
217-
line6_unlink_audio_urbs(line6pcm, pstr);
218-
spin_lock_irqsave(&pstr->lock, flags);
219-
if (direction == SNDRV_PCM_STREAM_CAPTURE) {
220-
line6pcm->prev_fbuf = NULL;
221-
line6pcm->prev_fsize = 0;
222-
}
210+
scoped_guard(spinlock_irqsave, &pstr->lock) {
211+
clear_bit(type, &pstr->running);
212+
if (pstr->running)
213+
return;
214+
}
215+
216+
line6_unlink_audio_urbs(line6pcm, pstr);
217+
if (direction == SNDRV_PCM_STREAM_CAPTURE) {
218+
guard(spinlock_irqsave)(&pstr->lock);
219+
line6pcm->prev_fbuf = NULL;
220+
line6pcm->prev_fsize = 0;
223221
}
224-
spin_unlock_irqrestore(&pstr->lock, flags);
225222
}
226223

227224
/* common PCM trigger callback */

0 commit comments

Comments
 (0)