diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-11-12 00:59:04 +0100 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2009-11-12 00:59:04 +0100 |
commit | 0526484aa345adbf790d1201a6f5d09be0a648a3 (patch) | |
tree | 8da37ac2858a960e80dc59ebc4afc460935724f4 /drivers/base/bus.c | |
parent | powerpc/kvm: Fix non-modular build (diff) | |
parent | Merge git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable (diff) | |
download | linux-0526484aa345adbf790d1201a6f5d09be0a648a3.tar.xz linux-0526484aa345adbf790d1201a6f5d09be0a648a3.zip |
Merge commit 'origin/master' into next
Diffstat (limited to 'drivers/base/bus.c')
-rw-r--r-- | drivers/base/bus.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/base/bus.c b/drivers/base/bus.c index 973bf2ad4e0d..63c143e54a57 100644 --- a/drivers/base/bus.c +++ b/drivers/base/bus.c @@ -689,15 +689,19 @@ int bus_add_driver(struct device_driver *drv) printk(KERN_ERR "%s: driver_add_attrs(%s) failed\n", __func__, drv->name); } - error = add_bind_files(drv); - if (error) { - /* Ditto */ - printk(KERN_ERR "%s: add_bind_files(%s) failed\n", - __func__, drv->name); + + if (!drv->suppress_bind_attrs) { + error = add_bind_files(drv); + if (error) { + /* Ditto */ + printk(KERN_ERR "%s: add_bind_files(%s) failed\n", + __func__, drv->name); + } } kobject_uevent(&priv->kobj, KOBJ_ADD); return 0; + out_unregister: kfree(drv->p); drv->p = NULL; @@ -720,7 +724,8 @@ void bus_remove_driver(struct device_driver *drv) if (!drv->bus) return; - remove_bind_files(drv); + if (!drv->suppress_bind_attrs) + remove_bind_files(drv); driver_remove_attrs(drv->bus, drv); driver_remove_file(drv, &driver_attr_uevent); klist_remove(&drv->p->knode_bus); |