usbatm subdriver registration w/o .driver_info
Roman Kagan
rkagan at mail.ru
Thu Jan 27 06:50:30 EST 2005
Hi Duncan,
There's an alternative solution, absolutely raceless, but it is relying
on some properties which may be considered internal to the usb core.
Compile-tested only.
Cheers,
Roman.
Index: usbatm2.c
===================================================================
RCS file: /home/cvs/usbatm/usbatm2.c,v
retrieving revision 1.11
diff -u -r1.11 usbatm2.c
--- usbatm2.c 25 Jan 2005 08:18:09 -0000 1.11
+++ usbatm2.c 27 Jan 2005 11:47:19 -0000
@@ -1049,7 +1049,8 @@
static int usbatm_usb_probe (struct usb_interface *intf, const struct usb_device_id *id)
{
struct usb_device *dev = interface_to_usbdev(intf);
- struct usbatm_driver *driver = (struct usbatm_driver *) id->driver_info;
+ struct usbatm_driver *driver = container_of(to_usb_driver(intf->dev.driver),
+ struct usbatm_driver, usb);
struct usbatm_data *instance;
char *buf;
int error = -ENOMEM;
More information about the Usbatm
mailing list