Hi! We verified that xHCI with your patch correctly handles handshaking with the problem device.
2016-06-14 3:42 GMT+03:00 Tian, Feng <[email protected]>: > Thanks for your info, Yakovlev. > > Did you see problem with XHCI? If yes, I can provide a patch and could you > help verify it? > > Thanks > Feng > > -----Original Message----- > From: Evgeny Yakovlev [mailto:[email protected]] > Sent: Monday, June 13, 2016 5:29 PM > To: Tian, Feng <[email protected]> > Cc: [email protected] > Subject: Re: [edk2] [PATCH] MdeModulePkg/UsbBusDxe: Fixed USB descriptor > length check > > Hi Feng. > > Sorry, i was AFK for the past week. > > We have encountered this with Platronix USB headset. This device was > reporting *USB Interface* descriptor sizes 1 byte larger than what the spec > says. Headset was simply plugged in when we booted our firmware and > UsbCreateDesc failed to parse that and returned NULL which eventually > crashed the firmware later (i will try and send a separate patch to fix > that). We fixed UsbCreateDesc and device enumeration went fine, all > descriptors it sends are correct except for this odd size field. > > Evgeny > > > On 13 Jun 2016, at 05:32, Tian, Feng <[email protected]> wrote: > > > > Hi, Yakovlev > > > > Any response on this? > > > > Thanks > > Feng > > > > -----Original Message----- > > From: Tian, Feng > > Sent: Monday, June 6, 2016 9:27 AM > > To: Evgeny Yakovlev <[email protected]>; [email protected] > > Cc: Tian, Feng <[email protected]> > > Subject: RE: [edk2] [PATCH] MdeModulePkg/UsbBusDxe: Fixed USB descriptor > length check > > > > Hi, Evgenv > > > > Thanks for your contribution, Evgenv > > > > Could you let me know what error case you met? Is the Device Desc or > Config Desc larger than expected or other descs? > > > > Why I ask this question is because it would impact Xhci driver's > implementation in which we store some desc contents at internal. So looks > like XHCI driver also needs to be updated. > > > > Thanks > > Feng > > > > -----Original Message----- > > From: edk2-devel [mailto:[email protected]] On Behalf Of > Evgeny Yakovlev > > Sent: Sunday, June 5, 2016 10:29 PM > > To: [email protected] > > Subject: [edk2] [PATCH] MdeModulePkg/UsbBusDxe: Fixed USB descriptor > length check > > > > According to spec if the length of a descriptor is smaller than what the > specification defines, then the host shall ignore it. > > However if the size is greater than expected the host will ignore the > extra bytes and start looking for the next descriptor at the end of actual > length returned. Original check did not handle the latter case correctly > and only allowed descriptors with lengths exactly as defined in > specification. > > > > Contributed-under: TianoCore Contribution Agreement 1.0 > > Signed-off-by: Evgeny Yakovlev <[email protected]> > > --- > > MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c | 4 ++-- > > 1 file changed, 2 insertions(+), 2 deletions(-) > > > > diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c > b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c > > index 5b8b1aa..fba60da 100644 > > --- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c > > +++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c > > @@ -199,8 +199,8 @@ UsbCreateDesc ( > > } > > } > > > > - if ((Len <= Offset) || (Len < Offset + DescLen) || > > - (Head->Type != Type) || (Head->Len != DescLen)) { > > + if ((Len <= Offset) || (Len < Offset + Head->Len) || > > + (Head->Type != Type) || (Head->Len < DescLen)) { > > DEBUG (( EFI_D_ERROR, "UsbCreateDesc: met mal-format descriptor\n")); > > return NULL; > > } > > -- > > 2.7.4 (Apple Git-66) > > > > _______________________________________________ > > edk2-devel mailing list > > [email protected] > > https://lists.01.org/mailman/listinfo/edk2-devel > > _______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

