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