diff options
-rw-r--r-- | drivers/usb/core/devio.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index c44e98f6099e..5580c6e59bae 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c | |||
@@ -1726,20 +1726,21 @@ static struct class *usb_classdev_class; | |||
1726 | 1726 | ||
1727 | static int usb_classdev_add(struct usb_device *dev) | 1727 | static int usb_classdev_add(struct usb_device *dev) |
1728 | { | 1728 | { |
1729 | int minor = ((dev->bus->busnum-1) * 128) + (dev->devnum-1); | 1729 | struct device *cldev; |
1730 | 1730 | ||
1731 | dev->usb_classdev = device_create(usb_classdev_class, &dev->dev, | 1731 | cldev = device_create(usb_classdev_class, &dev->dev, dev->dev.devt, |
1732 | MKDEV(USB_DEVICE_MAJOR, minor), | 1732 | "usbdev%d.%d", dev->bus->busnum, |
1733 | "usbdev%d.%d", dev->bus->busnum, dev->devnum); | 1733 | dev->devnum); |
1734 | if (IS_ERR(dev->usb_classdev)) | 1734 | if (IS_ERR(cldev)) |
1735 | return PTR_ERR(dev->usb_classdev); | 1735 | return PTR_ERR(cldev); |
1736 | 1736 | dev->usb_classdev = cldev; | |
1737 | return 0; | 1737 | return 0; |
1738 | } | 1738 | } |
1739 | 1739 | ||
1740 | static void usb_classdev_remove(struct usb_device *dev) | 1740 | static void usb_classdev_remove(struct usb_device *dev) |
1741 | { | 1741 | { |
1742 | device_unregister(dev->usb_classdev); | 1742 | if (dev->usb_classdev) |
1743 | device_unregister(dev->usb_classdev); | ||
1743 | usb_fs_classdev_common_remove(dev); | 1744 | usb_fs_classdev_common_remove(dev); |
1744 | } | 1745 | } |
1745 | 1746 | ||