Yes, I am looking into it and just saw this.
G.

On Feb 14, 2013, at 8:24 PM, Richard Miller <[email protected]> wrote:

> I said:
> 
>>> The current Plan 9 usb architecture perpetuates the confusion by
>>> referring to them both with one name epN.1, but you still have to open
>>> them both independently.
> 
> Erik replied:
>> in that case, shouldn't these three blocks be reverted?
> 
> Erik is right, I was talking through my hat.  It's OK to open bulk
> endpoints read/write, and the kernel will do the right thing.  The
> actual problem, which neither of us had spotted although it was
> staring us in the face, is this:
> 
>            if((ep->dir == Ein || ep->dir == Eboth) && epin == -1)
>                epin = ep->id;
>            if((ep->dir == Ein || ep->dir == Eboth) && epout == -1)
>                epout = ep->id;
> 
> Notice the two occurrences of Ein?  The second one obviously should
> be Eout.  It was a typo (mine, I blush to admit).
> 
> My usb serial adapter uses the same ep number for input and output,
> so my testing didn't reveal this error.  I think the same typo will
> account for the double-free bug which Jeff (and Lucio on 4 Feb) reported.
> 
> Erik, Jeff, Lucio - please try changing the offending Ein to Eout in 
> /sys/src/cmd/usb/serial/serial.c:721 and see if your troubles are resolved.
> 
> 

Reply via email to