After further research, this commit[1][2] may explain what is going on. > Remove SIGIO support. Base tools do not implement it and ports relying > on libusbhid, generally via SDL, shouldn't do it either since it's not > portable.
If I understand correctly, I should take up this issue with the developers of the affected ports to not rely on this non-portable code. Many emulators rely on SDL. I incorrectly viewed this as a regression with uhid(4). Instead, it is a design decision by OpenBSD to break backward compatibility, in favor of more portable code. $ cd /usr/src $ cvs diff -rOPENBSD_6_1 -rHEAD sys/dev/usb/uhid.c Index: sys/dev/usb/uhid.c =================================================================== RCS file: /cvs/src/sys/dev/usb/uhid.c,v retrieving revision 1.66.6.1 retrieving revision 1.68 diff -u -p -r1.66.6.1 -r1.68 --- sys/dev/usb/uhid.c 1 Aug 2017 21:55:02 -0000 1.66.6.1 +++ sys/dev/usb/uhid.c 20 Jul 2017 16:54:45 -0000 1.68 @@ -1,4 +1,4 @@ -/* $OpenBSD: uhid.c,v 1.66.6.1 2017/08/01 21:55:02 bluhm Exp $ */ +/* $OpenBSD: uhid.c,v 1.68 2017/07/20 16:54:45 mpi Exp $ */ /* $NetBSD: uhid.c,v 1.57 2003/03/11 16:44:00 augustss Exp $ */ /* @@ -237,7 +237,7 @@ uhidclose(dev_t dev, int flag, int mode, DPRINTF(("uhidclose: sc=%p\n", sc)); clfree(&sc->sc_q); - free(sc->sc_obuf, M_USBDEV, 0); + free(sc->sc_obuf, M_USBDEV, sc->sc_hdev.sc_osize); uhidev_close(&sc->sc_hdev); return (0); Footnotes: [1] http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/usb/uhid.c?rev=1.68&content-type=text/x-cvsweb-markup [2] http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/dev/usb/uhid.c.diff?r1=1.67&r2=1.68&f=h -- Nam | PGP: 0x11B50169