On Sun, Apr 28, 2002, Olaf Hering <[EMAIL PROTECTED]> wrote:
> On Sun, Apr 28, Johannes Erdfelt wrote:
>
> > > - I get errors when I make this a #if 0:
> > >
> > > if (urb->status != -EINPROGRESS) {
> > > info("uhci_transfer_result: called for URB %p not in flight?",
>urb);
> > > #if 1
> > > spin_unlock_irqrestore(&urb->lock, flags);
> > > return;
> > > #endif
> > > goto out;
> > > }
> >
> > Are you absolutely sure? That code block should never get called. It's
> > solely there to detect errors. I don't even see the message in your
> > dmesg output.
> >
> > Not only that, but you can see that the code is exactly the same.
> >
> > The only thing that I could think of would be gcc miscompiling the code.
> > What version of gcc are you using?
>
> Yes, pre6 works, pre6 + the patch does not.
>
> Linux version 2.4.19-pre6 (olaf@siemens) (gcc version 2.95.3 20010315 (SuSE)) #1 Sam
>Apr 27 15:47:41 CEST 2002
It appears that 2.95.3 is the reccomended version to compile with, but
I'm not familiar with SuSE's variant.
FWIW, I use:
Linux version 2.5.8-pre3 (root@devel) (gcc version 2.96 20000731 (Red Hat Linux 7.1
2.96-85)) #5 SMP Thu Apr 11 20:51:48 PDT 2002
> > FWIW, there is no change in behaviour with that code snipped applied.
>
> And the two extra lines at the end of the function?
> It is now called unconditional..
>
> uhci_add_complete(urb);
> spin_unlock_irqrestore(&urb->lock, flags);
>
> Maybe the spinlock does not matter.
You left out a VERY important piece of the code. This is how it exactly
looks like:
out_complete:
uhci_add_complete(urb);
out:
spin_unlock_irqrestore(&urb->lock, flags);
As you can see, the code jumps to out, not to out_complete.
JE
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel