Re: [linux-usb-devel] Re: [OOPS, usbcore, releaseintf] 2.6.0-test10-mm1

From: Alan Stern
Date: Thu Dec 11 2003 - 10:23:36 EST


On Thu, 11 Dec 2003, Duncan Sands wrote:

> On Wednesday 10 December 2003 19:19, Alan Stern wrote:
> >
> > I don't understand the problem. What's wrong with dropping dev->serialize
> > before calling usb_reset_device() or usb_set_configuration() and then
> > reacquiring it afterward?
>
> The problem is that between dropping the lock and usb_set_configuration (or
> whatever) picking it up again, the device may be disconnected, so usb_set_configuration
> needs to handle the case of being called after disconnect (it doesn't seem to
> check for that right now, but I only had a quick look).

It should handle that okay (provided you retain a reference to the
usb_device so that it doesn't get deallocated). Although it wouldn't hurt
to change one of the tests from

if (dev->state != USB_STATE_ADDRESS)

to

if (dev->state > USB_STATE_ADDRESS)

> Also, after usbfs picks up
> the lock again it needs to check for disconnect. None of this is a big deal, but
> it could all be avoided by a simpler change: provide a usb_physical_set_configuration
> (or whatever), which is usb_set_configuration without taking dev->serialize.

I agree that it would ease things to provide entry points for set_config
and reset_device that require the caller to hold dev->serialize already.
The issue you and Oliver noted about holding the bus semaphore will go
away when I finally get around to rewriting usb_reset_device().

Alan Stern

-
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/