iface->condition = USB_INTERFACE_UNBOUND;
        mark_quiesced(iface);
 }
+struct find_interface_arg {
+       int minor;
+       struct usb_interface *interface;
+};
 
 static int __find_interface(struct device * dev, void * data)
 {
-       struct usb_interface ** ret = (struct usb_interface **)data;
-       struct usb_interface * intf = *ret;
-       int *minor = (int *)data;
+       struct find_interface_arg *arg = data;
+       struct usb_interface *intf;
 
        /* can't look at usb devices, only interfaces */
        if (dev->driver == &usb_generic_driver)
                return 0;
 
        intf = to_usb_interface(dev);
-       if (intf->minor != -1 && intf->minor == *minor) {
-               *ret = intf;
+       if (intf->minor != -1 && intf->minor == arg->minor) {
+               arg->interface = intf;
                return 1;
        }
        return 0;
  */
 struct usb_interface *usb_find_interface(struct usb_driver *drv, int minor)
 {
-       struct usb_interface *intf = (struct usb_interface *)(long)minor;
-       int ret;
-
-       ret = driver_for_each_device(&drv->driver, NULL, &intf, __find_interface);
+       struct find_interface_arg argb;
 
-       return ret ? intf : NULL;
+       argb.minor = minor;
+       argb.interface = NULL;
+       driver_for_each_device(&drv->driver, NULL, &argb, __find_interface);
+       return argb.interface;
 }
 
 #ifdef CONFIG_HOTPLUG