Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 27d39e26 authored by Akinobu Mita's avatar Akinobu Mita Committed by Greg Kroah-Hartman
Browse files

usb devio: handle class_device_create() error



This patch adds missing class_device_create() error check,
and makes notifier return NOTIFY_BAD.

Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent f8ac232a
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -1588,15 +1588,18 @@ const struct file_operations usbfs_device_file_operations = {
	.release =	usbdev_release,
};

static void usbdev_add(struct usb_device *dev)
static int usbdev_add(struct usb_device *dev)
{
	int minor = ((dev->bus->busnum-1) * 128) + (dev->devnum-1);

	dev->class_dev = class_device_create(usb_device_class, NULL,
				MKDEV(USB_DEVICE_MAJOR, minor), &dev->dev,
				"usbdev%d.%d", dev->bus->busnum, dev->devnum);
	if (IS_ERR(dev->class_dev))
		return PTR_ERR(dev->class_dev);

	dev->class_dev->class_data = dev;
	return 0;
}

static void usbdev_remove(struct usb_device *dev)
@@ -1609,7 +1612,8 @@ static int usbdev_notify(struct notifier_block *self, unsigned long action,
{
	switch (action) {
	case USB_DEVICE_ADD:
		usbdev_add(dev);
		if (usbdev_add(dev))
			return NOTIFY_BAD;
		break;
	case USB_DEVICE_REMOVE:
		usbdev_remove(dev);