On Fri, 8 Aug 2003, David Brownell wrote:
> Alan Stern wrote:
> > If hcd_endpoint_disable() is called at the same time that an URB is
> > submitted for that endpoint, there is a nasty race.
>
> This may be just for UHCI.
I'm not familiar enough with the other drivers to know how they would be
affected.
> > hcd_endpoint_disable() sets the endpoint maxpacket size to 0, in order to
> > prevent further submissions. But meanwhile, the HC driver is trying to
> > packetize the original request into maxpacket-sized packets. If maxpacket
> > is 0, the driver will hang.
>
> Only UHCI does packetization in software. (Except maybe for ISO.)
>
> The other HCs do this all in hardware, it's part of the QH or ED;
> though they do use the maxpacket value on submit paths. They use
> it when the QH/ED is initialized (which is at best rare in this path);
> and for some "short packet" case detection when setting up TDs
> (which won't matter here).
>
> Doesn't look like hangs could happen for them, and the QH/ED will
> get disabled immediatly in any case.
Okay, so maybe only UHCI needs to be fixed.
> > This patch fixes the problem for UHCI. Something equivalent is needed for
> > the other HC drivers.
>
> Ugh. The problem is that endpoint state is scattered all over
> the place, instead of localized in one easy-to-lock spot.
>
> Do you have a way to reproduce this scenario, so we can verify
> that the other HCDs don't hang? If only UHCI needs this extra
> check (it's already done earlier on the submit path) I'd rather
> not change them.
I haven't tried. But I suppose the effect could be simulated by inserting
something like
dev->epmaxpacketout[usb_pipeendpoint(pipe)] = 0;
dev->epmaxpacketin[usb_pipeendpoint(pipe)] = 0;
at an appropriate spot in usb_submit_urb() (i.e., after the check is
made).
Alan Stern
-------------------------------------------------------
This SF.Net email sponsored by: Free pre-built ASP.NET sites including
Data Reports, E-commerce, Portals, and Forums are available now.
Download today and enter to win an XBOX or Visual Studio .NET.
http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel