Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: [netbsd-7] src/sys/dev



Module Name:    src
Committed By:   martin
Date:           Sun Jan 11 14:13:25 UTC 2015

Modified Files:
        src/sys/dev [netbsd-7]: midi.c midi_if.h midivar.h sequencer.c
            sequencervar.h
        src/sys/dev/usb [netbsd-7]: FILES umidi.c umidi_quirks.c
Removed Files:
        src/sys/dev/usb [netbsd-7]: umidireg.h umidivar.h

Log Message:
Pull up following revision(s) (requested by mrg in ticket #407):
        sys/dev/midivar.h: revision 1.20
        sys/dev/usb/umidivar.h: file removal
        sys/dev/midi.c: revision 1.82
        sys/dev/midi.c: revision 1.83
        sys/dev/usb/FILES: revision 1.13
        sys/dev/midi_if.h: revision 1.26
        sys/dev/sequencer.c: revision 1.60
        sys/dev/sequencer.c: revision 1.61
        sys/dev/sequencer.c: revision 1.62
        sys/dev/sequencer.c: revision 1.63
        sys/dev/usb/umidi_quirks.c: revision 1.19
        sys/dev/usb/umidi.c: revision 1.66
        sys/dev/usb/umidi.c: revision 1.67
        sys/dev/usb/umidi.c: revision 1.68
        sys/dev/usb/umidireg.h: file removal
        sys/dev/sequencervar.h: revision 1.17
fix the midi_if documentation to properly describe the locks that will
be held during various operations.
various umidi clean ups:
- move the contents of umidi{reg,var}.h into umidi.c directly as they
  are not referenced by any other file.
- remove the useless include of umidi{reg,var}.h from umidi_quirks.c.
- add reference counting and wait/broadcast support to the IO paths.
- fix the error handling in midi_attach() and midi_open().
- sprinkle KASSERT() in several places.
- drop the local interrupt lock before calling into various parts of
  the USB code.  fixes lockdebug issues, and likely hangs.
- rename "binded" member as "bound".
with these most of the panics and problems i've seen are gone.  there
is still one lockdebug panic to deal with that happens when unplugging
umidi while midiplay(1) is running.
various clean ups for midi and sequencer:
midi specific:
- add reference counting for midi operations, and ensure that
  detach waits for other threads to complete before tearing
  down the device completely.
- in detach, halt midi callouts before destroying them
- re-check sc->dying after sleeping in midiread()
- in real_writebytes(), make sure we're open and not dying
- make sure we drop the interrupt lock before calling any code
  that may want to check thread locks.  this is now safe due to
  the above changes.
sequencer specific:
- avoid caching the midi softc in the sequencer softc.  instead,
  every time we want to use it, look it up again and make sure
  it still exists.
this fixes various crashes i've seen in the usb midi code when
detaching the umidi while it is active.
use __func__ in some debug messages.
- check sc->dying after sleeping in several more places, and
  convert it into EIO error where necessary.
- remove a wrong additional mutex_exit() call.
- make sure to check sc->dying under the device lock.
- fix a confusion between midi(4) unit and connected to sequencer
  devices.
- minor comment/debug clean ups.
fixes problems attempting to read or write from the right midi(4)
device using the sequencer(4) device when one or more of the
non-final devices fails to open with midiseq_open().
fix !AUDIO_DEBUG build.
CID/1261465: Dereference after NULL check.
CID/1261467: Unreachable code
actually fix one of the previous:  don't test for NULL after deref.


To generate a diff of this commit:
cvs rdiff -u -r1.81 -r1.81.2.1 src/sys/dev/midi.c
cvs rdiff -u -r1.25 -r1.25.14.1 src/sys/dev/midi_if.h
cvs rdiff -u -r1.19 -r1.19.14.1 src/sys/dev/midivar.h
cvs rdiff -u -r1.59 -r1.59.2.1 src/sys/dev/sequencer.c
cvs rdiff -u -r1.16 -r1.16.10.1 src/sys/dev/sequencervar.h
cvs rdiff -u -r1.12 -r1.12.22.1 src/sys/dev/usb/FILES
cvs rdiff -u -r1.65 -r1.65.12.1 src/sys/dev/usb/umidi.c
cvs rdiff -u -r1.18 -r1.18.14.1 src/sys/dev/usb/umidi_quirks.c
cvs rdiff -u -r1.8 -r0 src/sys/dev/usb/umidireg.h
cvs rdiff -u -r1.19 -r0 src/sys/dev/usb/umidivar.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.




Home | Main Index | Thread Index | Old Index