Hi,
Alan Stern:
> None of these changes should be needed. That's not to say there aren't
> any remaining problems -- there may well be, but they should be fixed
> another way.
>
Probably. You know more about that code than I do...
> I'm not sure about this test. A better approach might be to change the
> host controller drivers instead so that they don't call this routine after
> the root hub has been removed. I suppose that this test won't hurt,
> however.
>
> If you're running into races with unexpected device removal, this is
> probably the place where they occur.
>
OK, I'll look more closer into this.
> By the time this code runs, the root hub should already have been removed.
> Removing it will automatically cancel the status URB and hence will delete
> the timer; there's no need to delete it again.
>
At least one of these del_timer calls is needed, simply because
otherwise the timeout code gets called with a NULL data pointer. :-(
I simply slapped that check around the two locations which at first
glance looked like they might need them, and the problem went away.
I should note that the system isn't stable yet, but at least it's
significantly more stable than before. :-/
My test case is simple: Take a laptop with PCMCIA (or a PCMCIA<->PCI
card), stick an OHCI USB adapter with a serial adapter into it, an do a
while : ; do cardctl insert; sleep 3; cardctl eject; sleep 1; done
loop. Before applying this patch, death was certain after 10 iterations;
now it's more like 500.
--
Matthias Urlichs | {M:U} IT Design @ m-u-it.de | [EMAIL PROTECTED]
-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel