Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Input: let driver core create class device attribute groups

Rely on device core to create attribute groups for input devices
instead of open-coding it.

Signed-off-by: Dmitry Torokhov <dtor@mail.ru>

+8 -21
+8 -21
drivers/input/input.c
··· 754 754 .attrs = input_dev_caps_attrs, 755 755 }; 756 756 757 + static struct attribute_group *input_dev_attr_groups[] = { 758 + &input_dev_attr_group, 759 + &input_dev_id_attr_group, 760 + &input_dev_caps_attr_group, 761 + NULL 762 + }; 763 + 757 764 static void input_dev_release(struct class_device *class_dev) 758 765 { 759 766 struct input_dev *dev = to_input_dev(class_dev); ··· 914 907 dev = kzalloc(sizeof(struct input_dev), GFP_KERNEL); 915 908 if (dev) { 916 909 dev->cdev.class = &input_class; 910 + dev->cdev.groups = input_dev_attr_groups; 917 911 class_device_initialize(&dev->cdev); 918 912 mutex_init(&dev->mutex); 919 913 INIT_LIST_HEAD(&dev->h_list); ··· 987 979 if (error) 988 980 return error; 989 981 990 - error = sysfs_create_group(&dev->cdev.kobj, &input_dev_attr_group); 991 - if (error) 992 - goto fail1; 993 - 994 - error = sysfs_create_group(&dev->cdev.kobj, &input_dev_id_attr_group); 995 - if (error) 996 - goto fail2; 997 - 998 - error = sysfs_create_group(&dev->cdev.kobj, &input_dev_caps_attr_group); 999 - if (error) 1000 - goto fail3; 1001 - 1002 982 path = kobject_get_path(&dev->cdev.kobj, GFP_KERNEL); 1003 983 printk(KERN_INFO "input: %s as %s\n", 1004 984 dev->name ? dev->name : "Unspecified device", path ? path : "N/A"); ··· 1004 1008 input_wakeup_procfs_readers(); 1005 1009 1006 1010 return 0; 1007 - 1008 - fail3: sysfs_remove_group(&dev->cdev.kobj, &input_dev_id_attr_group); 1009 - fail2: sysfs_remove_group(&dev->cdev.kobj, &input_dev_attr_group); 1010 - fail1: class_device_del(&dev->cdev); 1011 - return error; 1012 1011 } 1013 1012 EXPORT_SYMBOL(input_register_device); 1014 1013 ··· 1027 1036 } 1028 1037 1029 1038 list_del_init(&dev->node); 1030 - 1031 - sysfs_remove_group(&dev->cdev.kobj, &input_dev_caps_attr_group); 1032 - sysfs_remove_group(&dev->cdev.kobj, &input_dev_id_attr_group); 1033 - sysfs_remove_group(&dev->cdev.kobj, &input_dev_attr_group); 1034 1039 1035 1040 class_device_unregister(&dev->cdev); 1036 1041