Re: [linux-usb-devel] Re: serious 2.6 bug in USB subsystem?

From: David Brownell
Date: Tue Mar 09 2004 - 15:44:18 EST


David Mosberger wrote:

> David Mosberger wrote:
>> ... add a new state
>> ED_DESCHEDULED, which is treated exactly like ED_IDLE, except
>> that in this state, the HC may still be referring to the ED in
>> question. Thus, if

David.B> Sounds exactly like ED_UNLINK -- except maybe that it's not
David.B> been put onto ed_rm_list (with ED_DEQUEUE set).
David.B> Why add another state?

So you can tell them apart. See ohci_endpoint_disable().

Not informative. Why doesn't UNLINK work as-is?
If there's a bug in how that's handled, better to fix it.
I'd be willing to believe there is one, given proof.


You seem to think small races are OK. I disagree. The smaller the

I certainly didn't say that, any more than you said
that there's no such thing as an engineering tradeoff!

(With which statement I'd likewise disagree.)

But I certainly did mean to say that I was skeptical
you were actually running into one particular race,
which I've had an eye on for some time. (And which
shouldn't have the failure mode you reported, though
some other things might...)


David.B> But some parts worry me. Like changing that code to BUG()
David.B> on a driver behavior that's perfectly reasonable;

With my patch, the only reason you enter ED_UNLINK state is
ohci_endpoint_disable(). If you try to ohci_urb_enqueue() on an ED in
this state, it will fail, so I don't there is a problem (I see now

It's entered in usb_unlink_urb() as always. So as I
noted, your patch would make drivers BUG() in cases
that are perfectly reasonable according to the API.


that I forgot to set the error-code for this case, that's obviously
something that needs to be fixed). But perhaps you had different
semantics in mind for ED_UNLINK?

As I've said more than once on this thread.

- Dave

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/