diff --git a/sys/dev/sound/midi/midi.c b/sys/dev/sound/midi/midi.c --- a/sys/dev/sound/midi/midi.c +++ b/sys/dev/sound/midi/midi.c @@ -1035,6 +1035,11 @@ lockmgr(&midistat_lock, LK_RELEASE); return EBADF; } + if (uio->uio_offset < 0 || + uio->uio_offset >= sbuf_len(&midistat_sbuf)) { + lockmgr(&midistat_lock, LK_RELEASE); + return 0; + } l = min(uio->uio_resid, sbuf_len(&midistat_sbuf) - uio->uio_offset); err = 0; if (l > 0) {