>Number: 101761
>Category: usb
>Synopsis: [patch] usb.h: increase maximal size of report descriptor
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-usb
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Thu Aug 10 14:50:24 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Dmitry Marakasov
>Release: FreeBSD 6.1-RELEASE-p3 i386
>Organization:
>Environment:
System: FreeBSD hades.panopticon 6.1-RELEASE-p3 FreeBSD 6.1-RELEASE-p3 #1: Tue
Aug 8 17:11:07 MSD 2006 [EMAIL PROTECTED]:/usr/obj/usr/src/sys/HADES i386
>Description:
In the struct usb_ctl_report_desc there's hardcoded limit to report descriptor
size (1024 bytes).
That's theoretically bad, as maximum descriptor size is not defined in the HID
spec and descriptor may not fit into 1024 bytes.
In practice, I have at least one device that has descriptor size > 1024.
That's `uhid1: Microsoft SideWinder Force Feedback 2 Joystick, rev 1.10/a.00,
addr 3, iclass 3/0', and it has 1343 byte long report descriptor. So, as a
temporal fix, I suggest to double maximum report size.
Maybe the number should be risen even more (64k should be enough for any sane
report descriptor), as I don't know if there's any way to dynamically allocate
buffer for the descriptor.
Note, that this change will break ABI compatibility (as value of
USB_GET_REPORT_DESC depends of sizeof(struct usb_ctl_report_desc)), and all
software that includes <dev/usb/usb.h> should be recompiled, so UPDATING entry
should be added.
>How-To-Repeat:
>Fix:
--- usb.h.patch begins here ---
--- src/sys/dev/usb/usb.h.orig Thu Aug 10 18:22:01 2006
+++ src/sys/dev/usb/usb.h Thu Aug 10 18:21:32 2006
@@ -589,7 +589,7 @@
struct usb_ctl_report_desc {
int ucrd_size;
- u_char ucrd_data[1024]; /* filled data size will vary */
+ u_char ucrd_data[2048]; /* filled data size will vary */
};
typedef struct { u_int32_t cookie; } usb_event_cookie_t;
--- usb.h.patch ends here ---
>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "[EMAIL PROTECTED]"