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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
c5501d23e3
commit
f9bbcbef0c
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user