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

Commit f9bbcbef authored by Greg Kroah-Hartman's avatar Greg Kroah-Hartman
Browse files

USB: trancevibrator: convert to use dev_groups

USB drivers now support the ability for the driver core to handle the
creation and removal of device-specific sysfs files in a race-free
manner.  Take advantage of that by converting the driver to use this by
moving the sysfs attributes into a group and assigning the dev_groups
pointer to it.

Cc: Ding Xiang <dingxiang@cmss.chinamobile.com>
Link: https://lore.kernel.org/r/20190806144502.17792-11-gregkh@linuxfoundation.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c5501d23
Loading
Loading
Loading
Loading
+7 −8
Original line number Original line Diff line number Diff line
@@ -71,9 +71,14 @@ static ssize_t speed_store(struct device *dev, struct device_attribute *attr,
	}
	}
	return count;
	return count;
}
}

static DEVICE_ATTR_RW(speed);
static DEVICE_ATTR_RW(speed);


static struct attribute *tv_attrs[] = {
	&dev_attr_speed.attr,
	NULL,
};
ATTRIBUTE_GROUPS(tv);

static int tv_probe(struct usb_interface *interface,
static int tv_probe(struct usb_interface *interface,
		    const struct usb_device_id *id)
		    const struct usb_device_id *id)
{
{
@@ -89,15 +94,9 @@ static int tv_probe(struct usb_interface *interface,


	dev->udev = usb_get_dev(udev);
	dev->udev = usb_get_dev(udev);
	usb_set_intfdata(interface, dev);
	usb_set_intfdata(interface, dev);
	retval = device_create_file(&interface->dev, &dev_attr_speed);
	if (retval)
		goto error_create_file;


	return 0;
	return 0;


error_create_file:
	usb_put_dev(udev);
	usb_set_intfdata(interface, NULL);
error:
error:
	kfree(dev);
	kfree(dev);
	return retval;
	return retval;
@@ -108,7 +107,6 @@ static void tv_disconnect(struct usb_interface *interface)
	struct trancevibrator *dev;
	struct trancevibrator *dev;


	dev = usb_get_intfdata (interface);
	dev = usb_get_intfdata (interface);
	device_remove_file(&interface->dev, &dev_attr_speed);
	usb_set_intfdata(interface, NULL);
	usb_set_intfdata(interface, NULL);
	usb_put_dev(dev->udev);
	usb_put_dev(dev->udev);
	kfree(dev);
	kfree(dev);
@@ -120,6 +118,7 @@ static struct usb_driver tv_driver = {
	.probe =	tv_probe,
	.probe =	tv_probe,
	.disconnect =	tv_disconnect,
	.disconnect =	tv_disconnect,
	.id_table =	id_table,
	.id_table =	id_table,
	.dev_groups =	tv_groups,
};
};


module_usb_driver(tv_driver);
module_usb_driver(tv_driver);