hc
2023-12-11 6778948f9de86c3cfaf36725a7c87dcff9ba247f
kernel/drivers/usb/usbip/stub_dev.c
....@@ -140,38 +140,13 @@
140140 }
141141 static DEVICE_ATTR_WO(usbip_sockfd);
142142
143
-static int stub_add_files(struct device *dev)
144
-{
145
- int err = 0;
146
-
147
- err = device_create_file(dev, &dev_attr_usbip_status);
148
- if (err)
149
- goto err_status;
150
-
151
- err = device_create_file(dev, &dev_attr_usbip_sockfd);
152
- if (err)
153
- goto err_sockfd;
154
-
155
- err = device_create_file(dev, &dev_attr_usbip_debug);
156
- if (err)
157
- goto err_debug;
158
-
159
- return 0;
160
-
161
-err_debug:
162
- device_remove_file(dev, &dev_attr_usbip_sockfd);
163
-err_sockfd:
164
- device_remove_file(dev, &dev_attr_usbip_status);
165
-err_status:
166
- return err;
167
-}
168
-
169
-static void stub_remove_files(struct device *dev)
170
-{
171
- device_remove_file(dev, &dev_attr_usbip_status);
172
- device_remove_file(dev, &dev_attr_usbip_sockfd);
173
- device_remove_file(dev, &dev_attr_usbip_debug);
174
-}
143
+static struct attribute *usbip_attrs[] = {
144
+ &dev_attr_usbip_status.attr,
145
+ &dev_attr_usbip_sockfd.attr,
146
+ &dev_attr_usbip_debug.attr,
147
+ NULL,
148
+};
149
+ATTRIBUTE_GROUPS(usbip);
175150
176151 static void stub_shutdown_connection(struct usbip_device *ud)
177152 {
....@@ -414,20 +389,10 @@
414389 goto err_port;
415390 }
416391
417
- rc = stub_add_files(&udev->dev);
418
- if (rc) {
419
- dev_err(&udev->dev, "stub_add_files for %s\n", udev_busid);
420
- goto err_files;
421
- }
422
-
423392 return 0;
424393
425
-err_files:
426
- usb_hub_release_port(udev->parent, udev->portnum,
427
- (struct usb_dev_state *) udev);
428394 err_port:
429395 dev_set_drvdata(&udev->dev, NULL);
430
- usb_put_dev(udev);
431396
432397 /* we already have busid_priv, just lock busid_lock */
433398 spin_lock(&busid_priv->busid_lock);
....@@ -442,6 +407,7 @@
442407 put_busid_priv(busid_priv);
443408
444409 sdev_free:
410
+ usb_put_dev(udev);
445411 stub_device_free(sdev);
446412
447413 return rc;
....@@ -492,7 +458,6 @@
492458 /*
493459 * NOTE: rx/tx threads are invoked for each usb_device.
494460 */
495
- stub_remove_files(&udev->dev);
496461
497462 /* release port */
498463 rc = usb_hub_release_port(udev->parent, udev->portnum,
....@@ -561,4 +526,5 @@
561526 .resume = stub_resume,
562527 #endif
563528 .supports_autosuspend = 0,
529
+ .dev_groups = usbip_groups,
564530 };