diff options
author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-08-21 16:47:50 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-08-21 19:02:19 -0400 |
commit | 3e9b2bae8369661070622d05570cbcdfa01770e6 (patch) | |
tree | a5e22d5953306740dca0da253752ad6830baaa50 /drivers/base | |
parent | fa2be40fe7c0aa3b7accbf6dfa9ef0976e191d4c (diff) |
sysfs: add sysfs_create/remove_groups()
These functions are being open-coded in 3 different places in the driver
core, and other driver subsystems will want to start doing this as well,
so move it to the sysfs core to keep it all in one place, where we know
it is written properly.
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base')
-rw-r--r-- | drivers/base/bus.c | 23 | ||||
-rw-r--r-- | drivers/base/core.c | 22 | ||||
-rw-r--r-- | drivers/base/driver.c | 22 |
3 files changed, 6 insertions, 61 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 5ee5d3c1d74b..f099af0b41af 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c | |||
@@ -884,32 +884,13 @@ static void bus_remove_attrs(struct bus_type *bus) | |||
884 | static int bus_add_groups(struct bus_type *bus, | 884 | static int bus_add_groups(struct bus_type *bus, |
885 | const struct attribute_group **groups) | 885 | const struct attribute_group **groups) |
886 | { | 886 | { |
887 | int error = 0; | 887 | return sysfs_create_groups(&bus->p->subsys.kobj, groups); |
888 | int i; | ||
889 | |||
890 | if (groups) { | ||
891 | for (i = 0; groups[i]; i++) { | ||
892 | error = sysfs_create_group(&bus->p->subsys.kobj, | ||
893 | groups[i]); | ||
894 | if (error) { | ||
895 | while (--i >= 0) | ||
896 | sysfs_remove_group(&bus->p->subsys.kobj, | ||
897 | groups[i]); | ||
898 | break; | ||
899 | } | ||
900 | } | ||
901 | } | ||
902 | return error; | ||
903 | } | 888 | } |
904 | 889 | ||
905 | static void bus_remove_groups(struct bus_type *bus, | 890 | static void bus_remove_groups(struct bus_type *bus, |
906 | const struct attribute_group **groups) | 891 | const struct attribute_group **groups) |
907 | { | 892 | { |
908 | int i; | 893 | sysfs_remove_groups(&bus->p->subsys.kobj, groups); |
909 | |||
910 | if (groups) | ||
911 | for (i = 0; groups[i]; i++) | ||
912 | sysfs_remove_group(&bus->p->subsys.kobj, groups[i]); | ||
913 | } | 894 | } |
914 | 895 | ||
915 | static void klist_devices_get(struct klist_node *n) | 896 | static void klist_devices_get(struct klist_node *n) |
diff --git a/drivers/base/core.c b/drivers/base/core.c index af646afa5b7e..d743dcee1e77 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c | |||
@@ -493,31 +493,13 @@ static void device_remove_bin_attributes(struct device *dev, | |||
493 | 493 | ||
494 | int device_add_groups(struct device *dev, const struct attribute_group **groups) | 494 | int device_add_groups(struct device *dev, const struct attribute_group **groups) |
495 | { | 495 | { |
496 | int error = 0; | 496 | return sysfs_create_groups(&dev->kobj, groups); |
497 | int i; | ||
498 | |||
499 | if (groups) { | ||
500 | for (i = 0; groups[i]; i++) { | ||
501 | error = sysfs_create_group(&dev->kobj, groups[i]); | ||
502 | if (error) { | ||
503 | while (--i >= 0) | ||
504 | sysfs_remove_group(&dev->kobj, | ||
505 | groups[i]); | ||
506 | break; | ||
507 | } | ||
508 | } | ||
509 | } | ||
510 | return error; | ||
511 | } | 497 | } |
512 | 498 | ||
513 | void device_remove_groups(struct device *dev, | 499 | void device_remove_groups(struct device *dev, |
514 | const struct attribute_group **groups) | 500 | const struct attribute_group **groups) |
515 | { | 501 | { |
516 | int i; | 502 | sysfs_remove_groups(&dev->kobj, groups); |
517 | |||
518 | if (groups) | ||
519 | for (i = 0; groups[i]; i++) | ||
520 | sysfs_remove_group(&dev->kobj, groups[i]); | ||
521 | } | 503 | } |
522 | 504 | ||
523 | static int device_add_attrs(struct device *dev) | 505 | static int device_add_attrs(struct device *dev) |
diff --git a/drivers/base/driver.c b/drivers/base/driver.c index 89db726ebb98..c7efccb6f3bb 100644 --- a/drivers/base/driver.c +++ b/drivers/base/driver.c | |||
@@ -126,31 +126,13 @@ EXPORT_SYMBOL_GPL(driver_remove_file); | |||
126 | int driver_add_groups(struct device_driver *drv, | 126 | int driver_add_groups(struct device_driver *drv, |
127 | const struct attribute_group **groups) | 127 | const struct attribute_group **groups) |
128 | { | 128 | { |
129 | int error = 0; | 129 | return sysfs_create_groups(&drv->p->kobj, groups); |
130 | int i; | ||
131 | |||
132 | if (groups) { | ||
133 | for (i = 0; groups[i]; i++) { | ||
134 | error = sysfs_create_group(&drv->p->kobj, groups[i]); | ||
135 | if (error) { | ||
136 | while (--i >= 0) | ||
137 | sysfs_remove_group(&drv->p->kobj, | ||
138 | groups[i]); | ||
139 | break; | ||
140 | } | ||
141 | } | ||
142 | } | ||
143 | return error; | ||
144 | } | 130 | } |
145 | 131 | ||
146 | void driver_remove_groups(struct device_driver *drv, | 132 | void driver_remove_groups(struct device_driver *drv, |
147 | const struct attribute_group **groups) | 133 | const struct attribute_group **groups) |
148 | { | 134 | { |
149 | int i; | 135 | sysfs_remove_groups(&drv->p->kobj, groups); |
150 | |||
151 | if (groups) | ||
152 | for (i = 0; groups[i]; i++) | ||
153 | sysfs_remove_group(&drv->p->kobj, groups[i]); | ||
154 | } | 136 | } |
155 | 137 | ||
156 | /** | 138 | /** |