USB2: ugd round bug? including patch to solve.
Daichi GOTO
daichi at ongs.co.jp
Thu Jan 22 03:52:12 PST 2009
Hi USB2 folks ;-)
First I should show you my big respect. Thank you very much for your
great usb2 work. That works very well.
Using usb2, I have found a issue around uhid. ugd will be zero-cleared
when ioctl(fd, USB_GET_REPORT_DESC, &ugd) is called.
For example, follow ioctl are used to get information of report descriptor.
memset(&ugd, 0, sizeof(ugd));
ugd.ugd_data = malloc(len);
ugd.ugd_maxlen = len;
ioctl(fd, USB_GET_REPORT_DESC, &ugd)
The information of report descriptor should be copied to ugd, but ugd is
zero-cleared.
From my research, perphaps follow patch is good solution to solve this
problem. How do you usb2 guys make of this? Please check and solve
this issue. Thanks :)
--- sys/dev/usb2/include/usb2_ioctl.h.orig 2009-01-22 20:11:13.000000000 +0900
+++ sys/dev/usb2/include/usb2_ioctl.h 2009-01-22 20:09:35.000000000 +0900
@@ -223,7 +223,7 @@
#define USB_DEVICEENUMERATE _IOW ('U', 6, int)
/* Generic HID device */
-#define USB_GET_REPORT_DESC _IOR ('U', 21, struct usb2_gen_descriptor)
+#define USB_GET_REPORT_DESC _IOWR('U', 21, struct usb2_gen_descriptor)
#define USB_SET_IMMED _IOW ('U', 22, int)
#define USB_GET_REPORT _IOWR('U', 23, struct usb2_gen_descriptor)
#define USB_SET_REPORT _IOW ('U', 24, struct usb2_gen_descriptor)
--
Daichi GOTO, http://people.freebsd.org/~daichi
More information about the freebsd-current
mailing list