From af3185c4b5c95ba3769aa8678e7ad40b9b8f41da Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Fri, 30 Jan 2015 21:54:37 +0100 Subject: [PATCH] usb_midi: KDL when receiving data on a closed port MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In normal situations the midi_server opens all midi ports, so this wouldn't be a problem. However, my new MIDI keyboard (Miditech i²Control-25) sends some MIDI events immediately when it is connected to an USB port. These would be handled before the MIDI server had a chance to open the port, leading to a KDL. A similar problem could be triggered by killing the midi_server then sending MIDI events from any other USB device. --- src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.cpp b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.cpp index c78a278844..3facd1ae57 100644 --- a/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.cpp +++ b/src/add-ons/kernel/drivers/midi/usb_midi/usb_midi.cpp @@ -213,6 +213,9 @@ interpret_midi_buffer(usbmidi_device_info* midiDevice) if (port == NULL) { DPRINTF_ERR((MY_ID "no port matching cable number %d!\n", packet->cn)); + } else if (port->open_fd == NULL) { + DPRINTF_ERR((MY_ID "received data for port %d but it is closed!\n", + packet->cn)); } else { ring_buffer_write(port->rbuf, packet->midi, pktlen); release_sem_etc(port->open_fd->sem_cb, pktlen,