USB2: ugd round bug? including patch to solve.

From: Daichi GOTO <daichi_at_ongs.co.jp>
Date: Thu, 22 Jan 2009 20:33:34 +0900
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
_at__at_ -223,7 +223,7 _at__at_
  #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
Received on Thu Jan 22 2009 - 10:52:12 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:40 UTC