File tree Expand file tree Collapse file tree 1 file changed +5
-0
lines changed Expand file tree Collapse file tree 1 file changed +5
-0
lines changed Original file line number Diff line number Diff line change @@ -286,12 +286,14 @@ static void line6_data_received(struct urb *urb)
286
286
{
287
287
struct usb_line6 * line6 = (struct usb_line6 * )urb -> context ;
288
288
struct midi_buffer * mb = & line6 -> line6midi -> midibuf_in ;
289
+ unsigned long flags ;
289
290
int done ;
290
291
291
292
if (urb -> status == - ESHUTDOWN )
292
293
return ;
293
294
294
295
if (line6 -> properties -> capabilities & LINE6_CAP_CONTROL_MIDI ) {
296
+ spin_lock_irqsave (& line6 -> line6midi -> lock , flags );
295
297
done =
296
298
line6_midibuf_write (mb , urb -> transfer_buffer , urb -> actual_length );
297
299
@@ -300,12 +302,15 @@ static void line6_data_received(struct urb *urb)
300
302
dev_dbg (line6 -> ifcdev , "%d %d buffer overflow - message skipped\n" ,
301
303
done , urb -> actual_length );
302
304
}
305
+ spin_unlock_irqrestore (& line6 -> line6midi -> lock , flags );
303
306
304
307
for (;;) {
308
+ spin_lock_irqsave (& line6 -> line6midi -> lock , flags );
305
309
done =
306
310
line6_midibuf_read (mb , line6 -> buffer_message ,
307
311
LINE6_MIDI_MESSAGE_MAXLEN ,
308
312
LINE6_MIDIBUF_READ_RX );
313
+ spin_unlock_irqrestore (& line6 -> line6midi -> lock , flags );
309
314
310
315
if (done <= 0 )
311
316
break ;
You can’t perform that action at this time.
0 commit comments