On Wed, 7 Jul 2004, Andrew Morton wrote:

> Greg KH <[EMAIL PROTECTED]> wrote:
> >
> > On Sat, Jul 03, 2004 at 12:23:30AM -0700, [EMAIL PROTECTED] wrote:
> > > 
> > > 
> > > usb_trylock_device() returns non-zero on success.
> > > 
> > > Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
> > 
> > Applied, thanks.
> > 
> 
> Can you unapply it and apply this one instead?
> 
> 
> From: Alan Stern <[EMAIL PROTECTED]>
> 
> As Andrew Morton has already spotted, I messed up the interpretation of the
> result codes from various _trylock() routines.  I didn't notice that
> down_trylock() and down_read_trylock() use opposite conventions for
> indicating success!  This patch fixes the incorrect interpretation of
> down_trylock().  That error may well be responsible for some of the
> problems cropping up recently with OHCI controllers.
> 
> Signed-off-by: Alan Stern <[EMAIL PROTECTED]>
> Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
> ---
> 
>  25-akpm/drivers/usb/core/usb.c |    2 +-
>  1 files changed, 1 insertion(+), 1 deletion(-)
> 
> diff -puN 
> drivers/usb/core/usb.c~as339-interpret-down_trylock-result-code-correctly-in 
> drivers/usb/core/usb.c
> --- 25/drivers/usb/core/usb.c~as339-interpret-down_trylock-result-code-correctly-in  
>  Tue Jul  6 17:10:05 2004
> +++ 25-akpm/drivers/usb/core/usb.c    Tue Jul  6 17:10:05 2004
> @@ -871,7 +871,7 @@ int usb_trylock_device(struct usb_device
>  {
>       if (!down_read_trylock(&usb_all_devices_rwsem))
>               return 0;
> -     if (!down_trylock(&udev->serialize)) {
> +     if (down_trylock(&udev->serialize)) {
>               up_read(&usb_all_devices_rwsem);
>               return 0;
>       }
> _


No, no -- don't unapply it!  Andrew's change was correct.  _Both_ patches
need to be applied.

The basic problem is that usb_trylock_device(), like down_read_trylock(),
returns 1 for success whereas down_trylock() returns 0 for success.  My
first patch, as329, replaced one occurrence of down_trylock in ohci-hub.c
with usb_trylock_device() but failed to invert the test of the return code
-- that's what Andrew's patch fixed.  In as329 there was one other
occurrence of down_trylock(), and again I misinterpreted the return code
-- that's what the patch above (as339) fixes.

Alan Stern




-------------------------------------------------------
This SF.Net email sponsored by Black Hat Briefings & Training.
Attend Black Hat Briefings & Training, Las Vegas July 24-29 - 
digital self defense, top technical experts, no vendor pitches, 
unmatched networking opportunities. Visit www.blackhat.com
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to