int ticks;
        struct usb_line6 *line6 = &toneport->line6;
        struct usb_device *usbdev = line6->usbdev;
+       u16 idProduct = le16_to_cpu(usbdev->descriptor.idProduct);
 
        /* sync time on device with host: */
        ticks = (int)get_seconds();
                                  0x0000);
        }
 
-       if (toneport_has_led(usbdev->descriptor.idProduct))
+       if (toneport_has_led(idProduct))
                toneport_update_led(&usbdev->dev);
 }
 
        int err;
        struct usb_line6 *line6 = &toneport->line6;
        struct usb_device *usbdev = line6->usbdev;
+       u16 idProduct = le16_to_cpu(usbdev->descriptor.idProduct);
 
        if ((interface == NULL) || (toneport == NULL))
                return -ENODEV;
        line6_read_serial_number(line6, &toneport->serial_number);
        line6_read_data(line6, 0x80c2, &toneport->firmware_version, 1);
 
-       if (toneport_has_led(usbdev->descriptor.idProduct)) {
+       if (toneport_has_led(idProduct)) {
                CHECK_RETURN(device_create_file
                             (&interface->dev, &dev_attr_led_red));
                CHECK_RETURN(device_create_file
 void line6_toneport_disconnect(struct usb_interface *interface)
 {
        struct usb_line6_toneport *toneport;
+       u16 idProduct;
 
        if (interface == NULL)
                return;
 
        toneport = usb_get_intfdata(interface);
        del_timer_sync(&toneport->timer);
+       idProduct = le16_to_cpu(toneport->line6.usbdev->descriptor.idProduct);
 
-       if (toneport_has_led(toneport->line6.usbdev->descriptor.idProduct)) {
+       if (toneport_has_led(idProduct)) {
                device_remove_file(&interface->dev, &dev_attr_led_red);
                device_remove_file(&interface->dev, &dev_attr_led_green);
        }