--- a/sys/dev/sound/midi/midi.c +++ b/sys/dev/sound/midi/midi.c @@ -368,14 +368,17 @@ midi_init(kobj_class_t cls, int unit, int channel, void *cookie) err2: + lockmgr(&m->qlock, LK_RELEASE); + lockmgr(&m->lock, LK_RELEASE); /* err2 is reached with both held */ lockuninit(&m->qlock); lockuninit(&m->lock); if (MIDIQ_BUF(m->inq)) kfree(MIDIQ_BUF(m->inq), M_MIDI); if (MIDIQ_BUF(m->outq)) kfree(MIDIQ_BUF(m->outq), M_MIDI); err1: + kfree(m->synth, M_MIDI); /* allocated at midi_init:311 */ kfree(m, M_MIDI); err0: lockmgr(&midistat_lock, LK_RELEASE);