diff options
-rw-r--r-- | drivers/s390/char/vmlogrdr.c | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/drivers/s390/char/vmlogrdr.c b/drivers/s390/char/vmlogrdr.c index e9d70aedbaa2..5138fc93dc00 100644 --- a/drivers/s390/char/vmlogrdr.c +++ b/drivers/s390/char/vmlogrdr.c | |||
@@ -656,10 +656,19 @@ static ssize_t vmlogrdr_recording_status_show(struct device_driver *driver, | |||
656 | len = strlen(buf); | 656 | len = strlen(buf); |
657 | return len; | 657 | return len; |
658 | } | 658 | } |
659 | |||
660 | |||
661 | static DRIVER_ATTR(recording_status, 0444, vmlogrdr_recording_status_show, | 659 | static DRIVER_ATTR(recording_status, 0444, vmlogrdr_recording_status_show, |
662 | NULL); | 660 | NULL); |
661 | static struct attribute *vmlogrdr_drv_attrs[] = { | ||
662 | &driver_attr_recording_status.attr, | ||
663 | NULL, | ||
664 | }; | ||
665 | static struct attribute_group vmlogrdr_drv_attr_group = { | ||
666 | .attrs = vmlogrdr_drv_attrs, | ||
667 | }; | ||
668 | static const struct attribute_group *vmlogrdr_drv_attr_groups[] = { | ||
669 | &vmlogrdr_drv_attr_group, | ||
670 | NULL, | ||
671 | }; | ||
663 | 672 | ||
664 | static struct attribute *vmlogrdr_attrs[] = { | 673 | static struct attribute *vmlogrdr_attrs[] = { |
665 | &dev_attr_autopurge.attr, | 674 | &dev_attr_autopurge.attr, |
@@ -704,9 +713,9 @@ static struct device_driver vmlogrdr_driver = { | |||
704 | .name = "vmlogrdr", | 713 | .name = "vmlogrdr", |
705 | .bus = &iucv_bus, | 714 | .bus = &iucv_bus, |
706 | .pm = &vmlogrdr_pm_ops, | 715 | .pm = &vmlogrdr_pm_ops, |
716 | .groups = vmlogrdr_drv_attr_groups, | ||
707 | }; | 717 | }; |
708 | 718 | ||
709 | |||
710 | static int vmlogrdr_register_driver(void) | 719 | static int vmlogrdr_register_driver(void) |
711 | { | 720 | { |
712 | int ret; | 721 | int ret; |
@@ -720,21 +729,14 @@ static int vmlogrdr_register_driver(void) | |||
720 | if (ret) | 729 | if (ret) |
721 | goto out_iucv; | 730 | goto out_iucv; |
722 | 731 | ||
723 | ret = driver_create_file(&vmlogrdr_driver, | ||
724 | &driver_attr_recording_status); | ||
725 | if (ret) | ||
726 | goto out_driver; | ||
727 | |||
728 | vmlogrdr_class = class_create(THIS_MODULE, "vmlogrdr"); | 732 | vmlogrdr_class = class_create(THIS_MODULE, "vmlogrdr"); |
729 | if (IS_ERR(vmlogrdr_class)) { | 733 | if (IS_ERR(vmlogrdr_class)) { |
730 | ret = PTR_ERR(vmlogrdr_class); | 734 | ret = PTR_ERR(vmlogrdr_class); |
731 | vmlogrdr_class = NULL; | 735 | vmlogrdr_class = NULL; |
732 | goto out_attr; | 736 | goto out_driver; |
733 | } | 737 | } |
734 | return 0; | 738 | return 0; |
735 | 739 | ||
736 | out_attr: | ||
737 | driver_remove_file(&vmlogrdr_driver, &driver_attr_recording_status); | ||
738 | out_driver: | 740 | out_driver: |
739 | driver_unregister(&vmlogrdr_driver); | 741 | driver_unregister(&vmlogrdr_driver); |
740 | out_iucv: | 742 | out_iucv: |
@@ -748,7 +750,6 @@ static void vmlogrdr_unregister_driver(void) | |||
748 | { | 750 | { |
749 | class_destroy(vmlogrdr_class); | 751 | class_destroy(vmlogrdr_class); |
750 | vmlogrdr_class = NULL; | 752 | vmlogrdr_class = NULL; |
751 | driver_remove_file(&vmlogrdr_driver, &driver_attr_recording_status); | ||
752 | driver_unregister(&vmlogrdr_driver); | 753 | driver_unregister(&vmlogrdr_driver); |
753 | iucv_unregister(&vmlogrdr_iucv_handler, 1); | 754 | iucv_unregister(&vmlogrdr_iucv_handler, 1); |
754 | } | 755 | } |