Messages in this thread | | | From | Duncan Sands <> | Subject | Re: [linux-usb-devel] Re: [OOPS, usbcore, releaseintf] 2.6.0-test10-mm1 | Date | Tue, 9 Dec 2003 21:24:45 +0100 |
| |
> Here's how I see it. > > dev->serialize is meant to protect significant state changes, things like > set_configuration and device disconnect. ps->devsem is meant to protect > against usbfs trying to do two things to the device at the same time.
Actually no: it is a read lock and all routines take it with down_read except for the disconnect routine. So it is only there to guard against disconnect.
> But you also want to protect against usbfs using the device during a state > change. (The normal protection mechanisms don't work because usbfs might > be using a device without having a driver bound to any of its interfaces.) > Given that, there's no reason usbfs shouldn't just use serialize instead > of devsem. > > The fact that the core calls driver_disconnect with serialize already held > then just makes your life simpler: You don't need to acquire the lock > yourself! > > The only tricky part is that you have to release serialize (which now is > your only lock) before calling set_configuration. But as you said, you > would have to release ps->devsem anyway, so nothing's lost there. > > Anything wrong with this approach?
Nothing - that is exactly what my patch does. And it works... except for the Oops in usb_put_dev.
All the best,
Duncan. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |