USB: usbip: 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: Valentina Manea <valentina.manea.m@gmail.com> Cc: Shuah Khan <shuah@kernel.org> Link: https://lore.kernel.org/r/20190806144502.17792-13-gregkh@linuxfoundation.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e605c30977
commit
c5501d23e3
|
@ -106,38 +106,13 @@ err:
|
|||
}
|
||||
static DEVICE_ATTR_WO(usbip_sockfd);
|
||||
|
||||
static int stub_add_files(struct device *dev)
|
||||
{
|
||||
int err = 0;
|
||||
|
||||
err = device_create_file(dev, &dev_attr_usbip_status);
|
||||
if (err)
|
||||
goto err_status;
|
||||
|
||||
err = device_create_file(dev, &dev_attr_usbip_sockfd);
|
||||
if (err)
|
||||
goto err_sockfd;
|
||||
|
||||
err = device_create_file(dev, &dev_attr_usbip_debug);
|
||||
if (err)
|
||||
goto err_debug;
|
||||
|
||||
return 0;
|
||||
|
||||
err_debug:
|
||||
device_remove_file(dev, &dev_attr_usbip_sockfd);
|
||||
err_sockfd:
|
||||
device_remove_file(dev, &dev_attr_usbip_status);
|
||||
err_status:
|
||||
return err;
|
||||
}
|
||||
|
||||
static void stub_remove_files(struct device *dev)
|
||||
{
|
||||
device_remove_file(dev, &dev_attr_usbip_status);
|
||||
device_remove_file(dev, &dev_attr_usbip_sockfd);
|
||||
device_remove_file(dev, &dev_attr_usbip_debug);
|
||||
}
|
||||
static struct attribute *usbip_attrs[] = {
|
||||
&dev_attr_usbip_status.attr,
|
||||
&dev_attr_usbip_sockfd.attr,
|
||||
&dev_attr_usbip_debug.attr,
|
||||
NULL,
|
||||
};
|
||||
ATTRIBUTE_GROUPS(usbip);
|
||||
|
||||
static void stub_shutdown_connection(struct usbip_device *ud)
|
||||
{
|
||||
|
@ -379,17 +354,8 @@ static int stub_probe(struct usb_device *udev)
|
|||
goto err_port;
|
||||
}
|
||||
|
||||
rc = stub_add_files(&udev->dev);
|
||||
if (rc) {
|
||||
dev_err(&udev->dev, "stub_add_files for %s\n", udev_busid);
|
||||
goto err_files;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
err_files:
|
||||
usb_hub_release_port(udev->parent, udev->portnum,
|
||||
(struct usb_dev_state *) udev);
|
||||
err_port:
|
||||
dev_set_drvdata(&udev->dev, NULL);
|
||||
usb_put_dev(udev);
|
||||
|
@ -457,7 +423,6 @@ static void stub_disconnect(struct usb_device *udev)
|
|||
/*
|
||||
* NOTE: rx/tx threads are invoked for each usb_device.
|
||||
*/
|
||||
stub_remove_files(&udev->dev);
|
||||
|
||||
/* release port */
|
||||
rc = usb_hub_release_port(udev->parent, udev->portnum,
|
||||
|
@ -526,4 +491,5 @@ struct usb_device_driver stub_driver = {
|
|||
.resume = stub_resume,
|
||||
#endif
|
||||
.supports_autosuspend = 0,
|
||||
.dev_groups = usbip_groups,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue