summaryrefslogtreecommitdiffstats
path: root/drivers/base/bus.c
diff options
context:
space:
mode:
authorGreg Kroah-Hartman2013-08-09 00:22:55 +0200
committerGreg Kroah-Hartman2013-08-13 00:33:31 +0200
commitfa6fdb33b486a8afc5439c504da8d581e142c77d (patch)
tree2195533d76d3a35d78c9e685de128ca80248bea1 /drivers/base/bus.c
parenttile / cpu topology: remove stale Macro arch_provides_topology_pointers (diff)
downloadkernel-qcow2-linux-fa6fdb33b486a8afc5439c504da8d581e142c77d.tar.gz
kernel-qcow2-linux-fa6fdb33b486a8afc5439c504da8d581e142c77d.tar.xz
kernel-qcow2-linux-fa6fdb33b486a8afc5439c504da8d581e142c77d.zip
driver core: bus_type: add dev_groups
attribute groups are much more flexible than just a list of attributes, due to their support for visibility of the attributes, and binary attributes. Add dev_groups to struct bus_type which should be used instead of dev_attrs. dev_attrs will be removed from the structure soon. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/base/bus.c')
-rw-r--r--drivers/base/bus.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c
index d414331b480e..7b2dc5ba7d79 100644
--- a/drivers/base/bus.c
+++ b/drivers/base/bus.c
@@ -499,6 +499,9 @@ int bus_add_device(struct device *dev)
error = device_add_attrs(bus, dev);
if (error)
goto out_put;
+ error = device_add_groups(dev, bus->dev_groups);
+ if (error)
+ goto out_groups;
error = sysfs_create_link(&bus->p->devices_kset->kobj,
&dev->kobj, dev_name(dev));
if (error)
@@ -513,6 +516,8 @@ int bus_add_device(struct device *dev)
out_subsys:
sysfs_remove_link(&bus->p->devices_kset->kobj, dev_name(dev));
+out_groups:
+ device_remove_groups(dev, bus->dev_groups);
out_id:
device_remove_attrs(bus, dev);
out_put:
@@ -575,6 +580,7 @@ void bus_remove_device(struct device *dev)
sysfs_remove_link(&dev->bus->p->devices_kset->kobj,
dev_name(dev));
device_remove_attrs(dev->bus, dev);
+ device_remove_groups(dev, dev->bus->dev_groups);
if (klist_node_attached(&dev->p->knode_bus))
klist_del(&dev->p->knode_bus);