[alsa-devel] [PATCH] RME HDSPM MADI lock fix
    Jörn Nettingsmeier 
    nettings at stackingdwarves.net
       
    Sun Jun  5 11:57:57 CEST 2011
    
    
  
hi *!
while we were trying to debug the midi-related xruns in the current 
driver, i came across what looks like an unrelated locking bug to me:
static int snd_hdspm_midi_input_read (struct hdspm_midi *hmidi)
...
         spin_lock_irqsave (&hmidi->lock, flags); <---------------
         n_pending = snd_hdspm_midi_input_available (hmidi->hdspm, 
hmidi->id);
         if (n_pending > 0) {
                 if (hmidi->input) {
                         if (n_pending > (int)sizeof (buf))
                                 n_pending = sizeof (buf);
                         for (i = 0; i < n_pending; ++i)
                                 buf[i] = snd_hdspm_midi_read_byte 
(hmidi->hdspm,
 
hmidi->id);
                         if (n_pending)
                                 snd_rawmidi_receive (hmidi->input, buf,
                                                      n_pending);
                 } else {
                         /* flush the MIDI input FIFO */
                         while (n_pending--)
                                 snd_hdspm_midi_read_byte (hmidi->hdspm,
                                                           hmidi->id);
                 }
         }
         hmidi->pending = 0;
         hmidi->hdspm->control_register |= hmidi->ie;<------- !!!
         hdspm_write(hmidi->hdspm, HDSPM_controlRegister,
                     hmidi->hdspm->control_register);
         spin_unlock_irqrestore (&hmidi->lock, flags);<---------
         return snd_hdspm_midi_output_write (hmidi);
}
if i understand this whole business correctly, we should be holding the 
hdspm lock here, not the hmidi one.
please review the attached patch and apply if you think it's ok.
best,
jörn
-- 
Jörn Nettingsmeier
Lortzingstr. 11, 45128 Essen, Tel. +49 177 7937487
Meister für Veranstaltungstechnik (Bühne/Studio)
Tonmeister (VDT)
http://stackingdwarves.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hdspm-lockfix.diff
Type: text/x-patch
Size: 663 bytes
Desc: not available
Url : http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20110605/373a8a80/attachment.diff 
    
    
More information about the Alsa-devel
mailing list