> > Now a routine that's not allowed to be called with a thread context
> > can't be called in_interrupt() any longer, even given buggy device
> > drivers that don't disconnect() correctly.
> 
> Anyway, I don't understand how this patch changes anything.  The call to
> usb_put_dev() right below the place you patched usb_disconnect() would
> do all of the cleanup that you just added to the function.

For correctly functioning device drivers, yes -- it just moves the
cleanup from one function to another one.

However, for the inevitable buggy device drivers, this guarantees
the cleanup would never be done in_interrupt().  


> Are you trying to separate the hardware specific portions of the device
> from the "logical" portions?  (I think this is your main point, right?)

Err, not quite.  Although bus->deallocate() is conventionally where
such hardware-related cleanups would be done, the real issue is
that it must not be called in_interrupt().


> If so, this patch _might_ work, but I'd like to get Johannes to look at
> it in light of uhci.c.

It's always been a NOP for "uhci.c", it couldn't be affected.

- Dave


_______________________________________________________________

Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to