On Wed, 12 Jan 2005, Matthias Urlichs wrote:
> 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.
Can you try testing again, leaving out the first and third hunks of your
patch and keeping just the second? (Although even that involves a race.
When the root-hub polling code is reorganized all these problems should go
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.
For further testing, try adding
WARN_ON(!urb);
if (!urb)
return;
just after the assignment to urb in rh_report_status().
Alan Stern
-------------------------------------------------------
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