hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/usb/misc/lvstest.c
....@@ -310,7 +310,7 @@
310310 }
311311 static DEVICE_ATTR_WO(enable_compliance);
312312
313
-static struct attribute *lvs_attributes[] = {
313
+static struct attribute *lvs_attrs[] = {
314314 &dev_attr_get_dev_desc.attr,
315315 &dev_attr_u1_timeout.attr,
316316 &dev_attr_u2_timeout.attr,
....@@ -321,10 +321,7 @@
321321 &dev_attr_enable_compliance.attr,
322322 NULL
323323 };
324
-
325
-static const struct attribute_group lvs_attr_group = {
326
- .attrs = lvs_attributes,
327
-};
324
+ATTRIBUTE_GROUPS(lvs);
328325
329326 static void lvs_rh_work(struct work_struct *work)
330327 {
....@@ -439,12 +436,6 @@
439436
440437 INIT_WORK(&lvs->rh_work, lvs_rh_work);
441438
442
- ret = sysfs_create_group(&intf->dev.kobj, &lvs_attr_group);
443
- if (ret < 0) {
444
- dev_err(&intf->dev, "Failed to create sysfs node %d\n", ret);
445
- goto free_urb;
446
- }
447
-
448439 pipe = usb_rcvintpipe(hdev, endpoint->bEndpointAddress);
449440 maxp = usb_maxpacket(hdev, pipe, usb_pipeout(pipe));
450441 usb_fill_int_urb(lvs->urb, hdev, pipe, &lvs->buffer[0], maxp,
....@@ -453,13 +444,11 @@
453444 ret = usb_submit_urb(lvs->urb, GFP_KERNEL);
454445 if (ret < 0) {
455446 dev_err(&intf->dev, "couldn't submit lvs urb %d\n", ret);
456
- goto sysfs_remove;
447
+ goto free_urb;
457448 }
458449
459450 return ret;
460451
461
-sysfs_remove:
462
- sysfs_remove_group(&intf->dev.kobj, &lvs_attr_group);
463452 free_urb:
464453 usb_free_urb(lvs->urb);
465454 return ret;
....@@ -469,7 +458,6 @@
469458 {
470459 struct lvs_rh *lvs = usb_get_intfdata(intf);
471460
472
- sysfs_remove_group(&intf->dev.kobj, &lvs_attr_group);
473461 usb_poison_urb(lvs->urb); /* used in scheduled work */
474462 flush_work(&lvs->rh_work);
475463 usb_free_urb(lvs->urb);
....@@ -479,6 +467,7 @@
479467 .name = "lvs",
480468 .probe = lvs_rh_probe,
481469 .disconnect = lvs_rh_disconnect,
470
+ .dev_groups = lvs_groups,
482471 };
483472
484473 module_usb_driver(lvs_driver);